Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 354281
b: refs/heads/master
c: de321a1
h: refs/heads/master
i:
  354279: d6fa005
v: v3
  • Loading branch information
Peter Hurley authored and Greg Kroah-Hartman committed Jan 30, 2013
1 parent 3a9e69a commit 56c0440
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2b86216ba1d059b2609532ded9400f905013b376
refs/heads/master: de321a14da65a534da89a80dde949d0c6ff6316f
21 changes: 12 additions & 9 deletions trunk/drivers/staging/fwserial/fwserial.c
Original file line number Diff line number Diff line change
Expand Up @@ -1783,10 +1783,11 @@ static struct fwtty_port *fwserial_find_port(struct fwtty_peer *peer)
return NULL;
}

static void fwserial_release_port(struct fwtty_port *port)
static void fwserial_release_port(struct fwtty_port *port, bool reset)
{
/* drop carrier (and all other line status) */
fwtty_update_port_status(port, 0);
if (reset)
fwtty_update_port_status(port, 0);

spin_lock_bh(&port->lock);

Expand Down Expand Up @@ -1816,7 +1817,7 @@ static void fwserial_plug_timeout(unsigned long data)
spin_unlock_bh(&peer->lock);

if (port)
fwserial_release_port(port);
fwserial_release_port(port, false);
}

/**
Expand Down Expand Up @@ -1879,7 +1880,7 @@ static int fwserial_connect_peer(struct fwtty_peer *peer)
peer_revert_state(peer);
release_port:
spin_unlock_bh(&peer->lock);
fwserial_release_port(port);
fwserial_release_port(port, false);
free_pkt:
kfree(pkt);
return err;
Expand Down Expand Up @@ -2157,7 +2158,7 @@ static void fwserial_remove_peer(struct fwtty_peer *peer)
spin_unlock_bh(&peer->lock);

if (port)
fwserial_release_port(port);
fwserial_release_port(port, true);

synchronize_rcu();
kfree(peer);
Expand Down Expand Up @@ -2617,7 +2618,7 @@ static void fwserial_handle_plug_req(struct work_struct *work)

spin_unlock_bh(&peer->lock);
if (port)
fwserial_release_port(port);
fwserial_release_port(port, false);

rcode = fwserial_send_mgmt_sync(peer, pkt);

Expand All @@ -2639,7 +2640,7 @@ static void fwserial_handle_plug_req(struct work_struct *work)
cleanup:
spin_unlock_bh(&peer->lock);
if (port)
fwserial_release_port(port);
fwserial_release_port(port, false);
kfree(pkt);
return;
}
Expand Down Expand Up @@ -2691,7 +2692,7 @@ static void fwserial_handle_unplug_req(struct work_struct *work)
cleanup:
spin_unlock_bh(&peer->lock);
if (port)
fwserial_release_port(port);
fwserial_release_port(port, true);
kfree(pkt);
return;
}
Expand All @@ -2702,6 +2703,7 @@ static int fwserial_parse_mgmt_write(struct fwtty_peer *peer,
size_t len)
{
struct fwtty_port *port = NULL;
bool reset = false;
int rcode;

if (addr != fwserial_mgmt_addr_handler.offset || len < sizeof(pkt->hdr))
Expand Down Expand Up @@ -2777,6 +2779,7 @@ static int fwserial_parse_mgmt_write(struct fwtty_peer *peer,
if (be16_to_cpu(pkt->hdr.code) & FWSC_RSP_NACK)
fwtty_notice(&peer->unit, "NACK unplug?");
port = peer_revert_state(peer);
reset = true;
}
break;

Expand All @@ -2788,7 +2791,7 @@ static int fwserial_parse_mgmt_write(struct fwtty_peer *peer,
spin_unlock_bh(&peer->lock);

if (port)
fwserial_release_port(port);
fwserial_release_port(port, reset);

return rcode;
}
Expand Down

0 comments on commit 56c0440

Please sign in to comment.