From: Andrew Morton <[EMAIL PROTECTED]> As noted by Kevin, tipc's release() does down_interruptible() and ignores the return value. So if signal_pending() we'll end up doing up() on a non-downed semaphore. Fix.
Cc: Kevin Winchester <[EMAIL PROTECTED]> Cc: Per Liden <[EMAIL PROTECTED]> Cc: Jon Maloy <[EMAIL PROTECTED]> Cc: Allan Stephens <[EMAIL PROTECTED]> Cc: "David S. Miller" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> --- net/tipc/socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN net/tipc/socket.c~tipc-fix-semaphore-handling net/tipc/socket.c --- a/net/tipc/socket.c~tipc-fix-semaphore-handling +++ a/net/tipc/socket.c @@ -253,7 +253,7 @@ static int release(struct socket *sock) dbg("sock_delete: %x\n",tsock); if (!tsock) return 0; - down_interruptible(&tsock->sem); + down(&tsock->sem); if (!sock->sk) { up(&tsock->sem); return 0; _ -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html