mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 10:43:43 +00:00
mac802154: fix hold rtnl while ioctl
This patch fixes an issue to set address configuration with ioctl. Accessing the mib requires rtnl lock and the ndo_do_ioctl doesn't hold the rtnl lock while this callback is called. This patch do that manually. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Reported-by: Matteo Petracca <matteo.petracca@sssup.it> Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
2d8cbd31dd
commit
4a669f7d72
@ -62,8 +62,7 @@ mac802154_wpan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
(struct sockaddr_ieee802154 *)&ifr->ifr_addr;
|
||||
int err = -ENOIOCTLCMD;
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
rtnl_lock();
|
||||
spin_lock_bh(&sdata->mib_lock);
|
||||
|
||||
switch (cmd) {
|
||||
@ -90,6 +89,7 @@ mac802154_wpan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
case SIOCSIFADDR:
|
||||
if (netif_running(dev)) {
|
||||
spin_unlock_bh(&sdata->mib_lock);
|
||||
rtnl_unlock();
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
@ -112,6 +112,7 @@ mac802154_wpan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
}
|
||||
|
||||
spin_unlock_bh(&sdata->mib_lock);
|
||||
rtnl_unlock();
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user