net/macvtap: fix reference counting
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 <f2c659f01951776204a6c5b902787d9019fbeebd@arndb.de>
Cc: Ed Swierk <76c7423178d7c400add88920e9b3323aae9388d7@aristanetworks.com>
Cc: Sridhar Samudrala <532f110e089ab7f9606f1ba1fe4648a4a4d5dcc2@us.ibm.com>
Acked-by: Sridhar Samudrala <532f110e089ab7f9606f1ba1fe4648a4a4d5dcc2@us.ibm.com>
Acked-by: Ed Swierk <76c7423178d7c400add88920e9b3323aae9388d7@aristanetworks.com>
Signed-off-by: David S. Miller <fe08d3c717adf2ae63592e4c9aec6e3e404d8e3e@davemloft.net>

TeamVee-Kanas/android_kernel_samsung_kanas,TeamVee-Kanas/android_kernel_samsung_kanas,KristFoundation/Programs,KristFoundation/Programs,KristFoundation/Programs,TeamVee-Kanas/android_kernel_samsung_kanas,KristFoundation/Programs,KristFoundation/Programs,KristFoundation/Programs,TeamVee-Kanas/android_kernel_samsung_kanas,TeamVee-Kanas/android_kernel_samsung_kanas