lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 18 Jun 2008 09:33:38 +1000 From: Herbert Xu <herbert@...dor.apana.org.au> To: Patrick Mullaney <pmullaney@...ell.com> Cc: davem@...emloft.net, Gregory Haskins <GHaskins@...ell.com>, chuck.lever@...cle.com, netdev@...r.kernel.org Subject: Re: Killing sk->sk_callback_lock (was Re: [PATCH] net/core/sock.c remove extra wakeup) On Mon, Jun 16, 2008 at 07:38:23PM -0600, Patrick Mullaney wrote: > > diff --git a/net/core/sock.c b/net/core/sock.c > index 1a394d0..a26d223 100644 > --- a/net/core/sock.c > +++ b/net/core/sock.c > @@ -1159,7 +1159,6 @@ static long sock_wait_for_wmem(struct sock * sk, long timeo) > break; > if (signal_pending(current)) > break; > - set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); > prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE); > if (atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) > break; > @@ -1167,9 +1166,11 @@ static long sock_wait_for_wmem(struct sock * sk, long timeo) > break; > if (sk->sk_err) > break; > + set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); > timeo = schedule_timeout(timeo); > } > finish_wait(sk->sk_sleep, &wait); > + clear_bit(SOCK_NOSPACE, &sk->sk_socket->flags); > return timeo; > } This is buggy. You're relying on the caller to not call this on the same socket concurrently. While this may be true for UDP right now (which is a less than ideal situation in itself), it isn't true in general. In particular, raw sockets still allow parallel writes to the same socket. So forget about the flags and just do the two queues as you proposed yourself :) Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@...dor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists