diff options
author | Arnd Bergmann <arnd@arndb.de> | 2010-02-11 05:55:39 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-15 21:49:49 -0800 |
commit | 564517e804c9c6d4e29c270bfc1517404d27107b (patch) | |
tree | f1912327050508a1d2902dbba7cbfcf7d054cd0f /virt | |
parent | e9449d85c67127d6f9d01aad8963d567ab02cb96 (diff) |
net/macvtap: fix reference counting
The RCU usage in the original code was broken because
there are cases where we possibly sleep with rcu_read_lock
held. As a fix, change the macvtap_file_get_queue to
get a reference on the socket and the netdev instead of
taking the full rcu_read_lock.
Also, change macvtap_file_get_queue failure case to
not require a subsequent macvtap_file_put_queue, as
pointed out by Ed Swierk.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Ed Swierk <eswierk@aristanetworks.com>
Cc: Sridhar Samudrala <sri@us.ibm.com>
Acked-by: Sridhar Samudrala <sri@us.ibm.com>
Acked-by: Ed Swierk <eswierk@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'virt')
0 files changed, 0 insertions, 0 deletions