Skip to content

Commit

Permalink
caif: Bugfix - wait_ev*_timeout returns long.
Browse files Browse the repository at this point in the history
Discovered bug when testing on 64bit architecture.
Fixed by using long to store result from wait_event_interruptible_timeout.

Signed-off-by: Sjur Braendeland <sjur.brandeland@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Sjur Braendeland authored and David S. Miller committed May 24, 2010
1 parent 8ce6ceb commit 9e4b816
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions net/caif/caif_socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -920,17 +920,17 @@ static int caif_connect(struct socket *sock, struct sockaddr *uaddr,
timeo = sock_sndtimeo(sk, flags & O_NONBLOCK);

release_sock(sk);
err = wait_event_interruptible_timeout(*sk_sleep(sk),
err = -ERESTARTSYS;
timeo = wait_event_interruptible_timeout(*sk_sleep(sk),
sk->sk_state != CAIF_CONNECTING,
timeo);
lock_sock(sk);
if (err < 0)
if (timeo < 0)
goto out; /* -ERESTARTSYS */
if (err == 0 && sk->sk_state != CAIF_CONNECTED) {
err = -ETIMEDOUT;
goto out;
}

err = -ETIMEDOUT;
if (timeo == 0 && sk->sk_state != CAIF_CONNECTED)
goto out;
if (sk->sk_state != CAIF_CONNECTED) {
sock->state = SS_UNCONNECTED;
err = sock_error(sk);
Expand All @@ -945,7 +945,6 @@ static int caif_connect(struct socket *sock, struct sockaddr *uaddr,
return err;
}


/*
* caif_release() - Disconnect a CAIF Socket
* Copied and modified af_irda.c:irda_release().
Expand Down

0 comments on commit 9e4b816

Please sign in to comment.