]> git.baikalelectronics.ru Git - kernel.git/commit
[NET]: Fix two issues wrt. SO_BINDTODEVICE.
authorDavid S. Miller <davem@sunset.davemloft.net>
Fri, 14 Sep 2007 23:41:03 +0000 (16:41 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Fri, 14 Sep 2007 23:41:03 +0000 (16:41 -0700)
commit46fb7f5b3dcd3e64d6b16aee9b2477b48aee1332
tree17e84e056331e90514fe1a5069d1fba9cdaab274
parent875120c628526819c3d16b88d7c2fd13b021e6d6
[NET]: Fix two issues wrt. SO_BINDTODEVICE.

1) Comments suggest that setting optlen to zero will unbind
   the socket from whatever device it might be attached to.  This
   hasn't been the case since at least 2.2.x because the first thing
   this function does is return -EINVAL if 'optlen' is less than
   sizeof(int).

   This check also means that passing in a two byte string doesn't
   work so well.  It's almost as if this code was testing with "eth?"
   patterned strings and nothing else :-)

   Fix this by breaking the logic of this facility out into a
   seperate function which validates optlen more appropriately.

   The optlen==0 and small string cases now work properly.

2) We should reset the cached route of the socket after we have made
   the device binding changes, not before.

Reported by Ben Greear.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/sock.c