diff mbox series

net: mac802154: fix WARNING in ieee802154_del_device

Message ID 20210412105851.24809-1-paskripkin@gmail.com (mailing list archive)
State Not Applicable
Headers show
Series net: mac802154: fix WARNING in ieee802154_del_device | expand

Commit Message

Pavel Skripkin April 12, 2021, 10:58 a.m. UTC
syzbot reported WARNING in ieee802154_del_device. The problem
was in uninitialized mutex. In case of NL802154_IFTYPE_MONITOR
mutex won't be initialized, but ieee802154_del_device() accessing it.

Reported-by: syzbot+bf8b5834b7ec229487ce@syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
---
 net/mac802154/iface.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Alexander Aring April 12, 2021, 11:45 a.m. UTC | #1
Hi,

On Mon, 12 Apr 2021 at 06:58, Pavel Skripkin <paskripkin@gmail.com> wrote:
>
> syzbot reported WARNING in ieee802154_del_device. The problem
> was in uninitialized mutex. In case of NL802154_IFTYPE_MONITOR
> mutex won't be initialized, but ieee802154_del_device() accessing it.
>
> Reported-by: syzbot+bf8b5834b7ec229487ce@syzkaller.appspotmail.com
> Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
> ---
>  net/mac802154/iface.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
> index 1cf5ac09edcb..be8d2a02c882 100644
> --- a/net/mac802154/iface.c
> +++ b/net/mac802154/iface.c
> @@ -599,6 +599,7 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
>
>                 break;
>         case NL802154_IFTYPE_MONITOR:
> +               mutex_init(&sdata->sec_mtx);
>                 sdata->dev->needs_free_netdev = true;
>                 sdata->dev->netdev_ops = &mac802154_monitor_ops;
>                 wpan_dev->promiscuous_mode = true;

yes that will fix the issue, but will let the user notify that setting
any security setting is supported by monitors which is not the case.
There are patches around which should return -EOPNOTSUPP for monitors.
However we might support it in future to let the kernel encrypt air
frames, but this isn't supported yet and the user should be aware that
it isn't.

- Alex
Pavel Skripkin April 12, 2021, 4:41 p.m. UTC | #2
Hi!

On Mon, 2021-04-12 at 07:45 -0400, Alexander Aring wrote:
> Hi,
> 
> On Mon, 12 Apr 2021 at 06:58, Pavel Skripkin <paskripkin@gmail.com>
> wrote:
> > 
> > syzbot reported WARNING in ieee802154_del_device. The problem
> > was in uninitialized mutex. In case of NL802154_IFTYPE_MONITOR
> > mutex won't be initialized, but ieee802154_del_device() accessing
> > it.
> > 
> > Reported-by: syzbot+bf8b5834b7ec229487ce@syzkaller.appspotmail.com
> > Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
> > ---
> >  net/mac802154/iface.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
> > index 1cf5ac09edcb..be8d2a02c882 100644
> > --- a/net/mac802154/iface.c
> > +++ b/net/mac802154/iface.c
> > @@ -599,6 +599,7 @@ ieee802154_setup_sdata(struct
> > ieee802154_sub_if_data *sdata,
> > 
> >                 break;
> >         case NL802154_IFTYPE_MONITOR:
> > +               mutex_init(&sdata->sec_mtx);
> >                 sdata->dev->needs_free_netdev = true;
> >                 sdata->dev->netdev_ops = &mac802154_monitor_ops;
> >                 wpan_dev->promiscuous_mode = true;
> 
> yes that will fix the issue, but will let the user notify that
> setting
> any security setting is supported by monitors which is not the case.
> There are patches around which should return -EOPNOTSUPP for
> monitors.
> However we might support it in future to let the kernel encrypt air
> frames, but this isn't supported yet and the user should be aware
> that
> it isn't.
> 

Thank you for your feedback. I am still not familiar with net internals
yet :) Next time I ll try to go deeper. Thanks!

> - Alex

With regards,
Pavel Skripkin
diff mbox series

Patch

diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index 1cf5ac09edcb..be8d2a02c882 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -599,6 +599,7 @@  ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
 
 		break;
 	case NL802154_IFTYPE_MONITOR:
+		mutex_init(&sdata->sec_mtx);
 		sdata->dev->needs_free_netdev = true;
 		sdata->dev->netdev_ops = &mac802154_monitor_ops;
 		wpan_dev->promiscuous_mode = true;