diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-08-15 21:20:44 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-08-19 06:35:58 (GMT) |
commit | 68d6ac6d2740b6a55f3ae92a4e0be6d881904b32 (patch) | |
tree | acb2b153892b6be2d39220017f30239d7d9a66b6 /net/rds/recv.c | |
parent | e243f5b6de35b6fc394bc2e1e1737afe538e7e0c (diff) | |
download | linux-68d6ac6d2740b6a55f3ae92a4e0be6d881904b32.tar.xz |
netlink: fix compat recvmsg
Since
commit 1dacc76d0014a034b8aca14237c127d7c19d7726
Author: Johannes Berg <johannes@sipsolutions.net>
Date: Wed Jul 1 11:26:02 2009 +0000
net/compat/wext: send different messages to compat tasks
we had a race condition when setting and then
restoring frag_list. Eric attempted to fix it,
but the fix created even worse problems.
However, the original motivation I had when I
added the code that turned out to be racy is
no longer clear to me, since we only copy up
to skb->len to userspace, which doesn't include
the frag_list length. As a result, not doing
any frag_list clearing and restoring avoids
the race condition, while not introducing any
other problems.
Additionally, while preparing this patch I found
that since none of the remaining netlink code is
really aware of the frag_list, we need to use the
original skb's information for packet information
and credentials. This fixes, for example, the
group information received by compat tasks.
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: stable@kernel.org [2.6.31+, for 2.6.35 revert 1235f504aa]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/recv.c')
0 files changed, 0 insertions, 0 deletions