Messages in this thread | | | From | Arnd Bergmann <> | Date | Mon, 2 Aug 2021 10:40:42 +0200 | Subject | Re: [syzbot] possible deadlock in br_ioctl_call |
| |
On Mon, Aug 2, 2021 at 10:30 AM Nikolay Aleksandrov <nikolay@nvidia.com> wrote: > On 01/08/2021 16:14, Hillf Danton wrote: > > On Sun, 01 Aug 2021 03:34:24 -0700 > >> syzbot found the following issue on: > > Thanks, but it will need more work, the bridge ioctl calls were divided in two parts > before: one was deviceless called by sock_ioctl and didn't expect rtnl to be held, the other was > with a device called by dev_ifsioc() and expected rtnl to be held. > Then ad2f99aedf8f ("net: bridge: move bridge ioctls out of .ndo_do_ioctl") > united them in a single ioctl stub, but didn't take care of the locking expectations. > For sock_ioctl now we acquire (1) br_ioctl_mutex, (2) rtnl and for dev_ifsioc we > acquire (1) rtnl, (2) br_ioctl_mutex as the lockdep warning has demonstrated.
Right, sorry about causing problems here.
> That fix above can work if rtnl gets reacquired by the ioctl in the proper switch cases. > To avoid playing even more locking games it'd probably be best to always acquire and > release rtnl by the bridge ioctl which will need a bit more work. > > Arnd, should I take care of it?
That would be best I think. As you have already analyzed the problem and come up with a possible solution, I'm sure you will get to a better fix more quickly than I would.
Thanks,
Arnd
| |