]> git.baikalelectronics.ru Git - kernel.git/commit
macvtap: rework object lifetime rules
authorArnd Bergmann <arnd@arndb.de>
Thu, 18 Feb 2010 05:45:36 +0000 (05:45 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 18 Feb 2010 22:08:37 +0000 (14:08 -0800)
commit685f75483c1ae11406e17e9ed8758a1f1018e04e
treeea1bf32f7464294ce90e288bf5440323e9ca6e7f
parenta9ef911b15084c508451f0ba3882d12eab2d7376
macvtap: rework object lifetime rules

This reworks the change done by the previous patch
in a more complete way.

The original macvtap code has a number of problems
resulting from the use of RCU for protecting the
access to struct macvtap_queue from open files.

This includes
- need for GFP_ATOMIC allocations for skbs
- potential deadlocks when copy_*_user sleeps
- inability to work with vhost-net

Changing the lifetime of macvtap_queue to always
depend on the open file solves all these. The
RCU reference simply moves one step down to
the reference on the macvlan_dev, which we
only need for nonblocking operations.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macvtap.c