netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH wpan] mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add()
@ 2022-11-30  9:17 Wei Yongjun
  2022-12-04 22:49 ` Alexander Aring
  0 siblings, 1 reply; 3+ messages in thread
From: Wei Yongjun @ 2022-11-30  9:17 UTC (permalink / raw)
  To: Alexander Aring, Stefan Schmidt, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Marcel Holtmann
  Cc: Wei Yongjun, linux-wpan, netdev

From: Wei Yongjun <weiyongjun1@huawei.com>

Kernel fault injection test reports null-ptr-deref as follows:

BUG: kernel NULL pointer dereference, address: 0000000000000008
RIP: 0010:cfg802154_netdev_notifier_call+0x120/0x310 include/linux/list.h:114
Call Trace:
 <TASK>
 raw_notifier_call_chain+0x6d/0xa0 kernel/notifier.c:87
 call_netdevice_notifiers_info+0x6e/0xc0 net/core/dev.c:1944
 unregister_netdevice_many_notify+0x60d/0xcb0 net/core/dev.c:1982
 unregister_netdevice_queue+0x154/0x1a0 net/core/dev.c:10879
 register_netdevice+0x9a8/0xb90 net/core/dev.c:10083
 ieee802154_if_add+0x6ed/0x7e0 net/mac802154/iface.c:659
 ieee802154_register_hw+0x29c/0x330 net/mac802154/main.c:229
 mcr20a_probe+0xaaa/0xcb1 drivers/net/ieee802154/mcr20a.c:1316

ieee802154_if_add() allocates wpan_dev as netdev's private data, but not
init the list in struct wpan_dev. cfg802154_netdev_notifier_call() manage
the list when device register/unregister, and may lead to null-ptr-deref.

Use INIT_LIST_HEAD() on it to initialize it correctly.

Fixes: fcf39e6e88e9 ("ieee802154: add wpan_dev_list")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>

diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index d9b50884d34e..f6122ab15449 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -650,6 +650,7 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name,
 	sdata->dev = ndev;
 	sdata->wpan_dev.wpan_phy = local->hw.phy;
 	sdata->local = local;
+	INIT_LIST_HEAD(&sdata->wpan_dev.list);
 
 	/* setup type-dependent data */
 	ret = ieee802154_setup_sdata(sdata, type);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH wpan] mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add()
  2022-11-30  9:17 [PATCH wpan] mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add() Wei Yongjun
@ 2022-12-04 22:49 ` Alexander Aring
  2022-12-05  8:58   ` Stefan Schmidt
  0 siblings, 1 reply; 3+ messages in thread
From: Alexander Aring @ 2022-12-04 22:49 UTC (permalink / raw)
  To: Wei Yongjun
  Cc: Alexander Aring, Stefan Schmidt, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Marcel Holtmann, Wei Yongjun,
	linux-wpan, netdev

Hi,

On Wed, Nov 30, 2022 at 4:19 AM Wei Yongjun <weiyongjun@huaweicloud.com> wrote:
>
> From: Wei Yongjun <weiyongjun1@huawei.com>
>
> Kernel fault injection test reports null-ptr-deref as follows:
>
> BUG: kernel NULL pointer dereference, address: 0000000000000008
> RIP: 0010:cfg802154_netdev_notifier_call+0x120/0x310 include/linux/list.h:114
> Call Trace:
>  <TASK>
>  raw_notifier_call_chain+0x6d/0xa0 kernel/notifier.c:87
>  call_netdevice_notifiers_info+0x6e/0xc0 net/core/dev.c:1944
>  unregister_netdevice_many_notify+0x60d/0xcb0 net/core/dev.c:1982
>  unregister_netdevice_queue+0x154/0x1a0 net/core/dev.c:10879
>  register_netdevice+0x9a8/0xb90 net/core/dev.c:10083
>  ieee802154_if_add+0x6ed/0x7e0 net/mac802154/iface.c:659
>  ieee802154_register_hw+0x29c/0x330 net/mac802154/main.c:229
>  mcr20a_probe+0xaaa/0xcb1 drivers/net/ieee802154/mcr20a.c:1316
>
> ieee802154_if_add() allocates wpan_dev as netdev's private data, but not
> init the list in struct wpan_dev. cfg802154_netdev_notifier_call() manage
> the list when device register/unregister, and may lead to null-ptr-deref.
>
> Use INIT_LIST_HEAD() on it to initialize it correctly.
>
> Fixes: fcf39e6e88e9 ("ieee802154: add wpan_dev_list")
> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>

Nice catch. :)

Acked-by: Alexander Aring <aahringo@redhat.com>

- Alex


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH wpan] mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add()
  2022-12-04 22:49 ` Alexander Aring
@ 2022-12-05  8:58   ` Stefan Schmidt
  0 siblings, 0 replies; 3+ messages in thread
From: Stefan Schmidt @ 2022-12-05  8:58 UTC (permalink / raw)
  To: Alexander Aring, Wei Yongjun
  Cc: Alexander Aring, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Marcel Holtmann, Wei Yongjun, linux-wpan, netdev

Hello.

On 04.12.22 23:49, Alexander Aring wrote:
> Hi,
> 
> On Wed, Nov 30, 2022 at 4:19 AM Wei Yongjun <weiyongjun@huaweicloud.com> wrote:
>>
>> From: Wei Yongjun <weiyongjun1@huawei.com>
>>
>> Kernel fault injection test reports null-ptr-deref as follows:
>>
>> BUG: kernel NULL pointer dereference, address: 0000000000000008
>> RIP: 0010:cfg802154_netdev_notifier_call+0x120/0x310 include/linux/list.h:114
>> Call Trace:
>>   <TASK>
>>   raw_notifier_call_chain+0x6d/0xa0 kernel/notifier.c:87
>>   call_netdevice_notifiers_info+0x6e/0xc0 net/core/dev.c:1944
>>   unregister_netdevice_many_notify+0x60d/0xcb0 net/core/dev.c:1982
>>   unregister_netdevice_queue+0x154/0x1a0 net/core/dev.c:10879
>>   register_netdevice+0x9a8/0xb90 net/core/dev.c:10083
>>   ieee802154_if_add+0x6ed/0x7e0 net/mac802154/iface.c:659
>>   ieee802154_register_hw+0x29c/0x330 net/mac802154/main.c:229
>>   mcr20a_probe+0xaaa/0xcb1 drivers/net/ieee802154/mcr20a.c:1316
>>
>> ieee802154_if_add() allocates wpan_dev as netdev's private data, but not
>> init the list in struct wpan_dev. cfg802154_netdev_notifier_call() manage
>> the list when device register/unregister, and may lead to null-ptr-deref.
>>
>> Use INIT_LIST_HEAD() on it to initialize it correctly.
>>
>> Fixes: fcf39e6e88e9 ("ieee802154: add wpan_dev_list")
>> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
> 
> Nice catch. :)
> 
> Acked-by: Alexander Aring <aahringo@redhat.com>


This patch has been applied to the wpan tree and will be
part of the next pull request to net. Thanks!

regards
Stefan Schmidt

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-12-05  9:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-30  9:17 [PATCH wpan] mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add() Wei Yongjun
2022-12-04 22:49 ` Alexander Aring
2022-12-05  8:58   ` Stefan Schmidt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).