tuntap: refuse to re-attach to different tun_struct
Multiqueue tun devices support detaching a tun_file from its tun_struct and re-attaching at a later point in time. This allows users to disable a specific queue temporarily. ioctl(TUNSETIFF) allows the user to specify the network interface to attach by name. This means the user can attempt to attach to interface "B" after detaching from interface "A". The driver is not designed to support this so check we are re-attaching to the right tun_struct. Failure to do so may lead to oops. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Acked-by: Jason Wang <jasowang@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
21caa6622b
commit
6e331f4c83
@@ -491,6 +491,8 @@ static int tun_attach(struct tun_struct *tun, struct file *file)
|
||||
err = -EINVAL;
|
||||
if (rcu_dereference_protected(tfile->tun, lockdep_rtnl_is_held()))
|
||||
goto out;
|
||||
if (tfile->detached && tun != tfile->detached)
|
||||
goto out;
|
||||
|
||||
err = -EBUSY;
|
||||
if (!(tun->flags & TUN_TAP_MQ) && tun->numqueues == 1)
|
||||
|
Reference in New Issue
Block a user