Re: [PATCH] ieee802154: hwsim: fix GPF in hwsim_new_edge_nl

From: Dongliang Mu
Date: Wed Jul 07 2021 - 12:11:36 EST


On Wed, Jul 7, 2021 at 11:56 PM Dongliang Mu <mudongliangabcd@xxxxxxxxx> wrote:
>
> Both MAC802154_HWSIM_ATTR_RADIO_ID and MAC802154_HWSIM_ATTR_RADIO_EDGE
> must be present to fix GPF.

I double-check the whole file, and there is only one similar issue
left in Line 421.

mac802154_hwsim.c 187 if (!info->attrs[MAC802154_HWSIM_ATTR_RADIO_ID])

mac802154_hwsim.c 299 if (!info->attrs[MAC802154_HWSIM_ATTR_RADIO_ID])

mac802154_hwsim.c 421 if (!info->attrs[MAC802154_HWSIM_ATTR_RADIO_ID] &&

mac802154_hwsim.c 483 if (!info->attrs[MAC802154_HWSIM_ATTR_RADIO_ID] ||

mac802154_hwsim.c 531 if (!info->attrs[MAC802154_HWSIM_ATTR_RADIO_ID] ||

mac80211_hwsim.c 3575 if (!info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER] ||

mac80211_hwsim.c 3663 if (!info->attrs[HWSIM_ATTR_ADDR_RECEIVER] ||

mac80211_hwsim.c 3982 if (!info->attrs[HWSIM_ATTR_RADIO_ID])

In addition, I check this pattern in the whole source code, it seems
if statements with "&&" in other files are correct. For example,

if (!info->attrs[NFC_ATTR_DEVICE_INDEX] ||
(!info->attrs[NFC_ATTR_LLC_PARAM_LTO] &&
!info->attrs[NFC_ATTR_LLC_PARAM_RW] &&
!info->attrs[NFC_ATTR_LLC_PARAM_MIUX]))
return -EINVAL;

>
> Fixes: f25da51fdc38 ("ieee802154: hwsim: add replacement for fakelb")
> Signed-off-by: Dongliang Mu <mudongliangabcd@xxxxxxxxx>
> ---
> drivers/net/ieee802154/mac802154_hwsim.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ieee802154/mac802154_hwsim.c b/drivers/net/ieee802154/mac802154_hwsim.c
> index cae52bfb871e..8caa61ec718f 100644
> --- a/drivers/net/ieee802154/mac802154_hwsim.c
> +++ b/drivers/net/ieee802154/mac802154_hwsim.c
> @@ -418,7 +418,7 @@ static int hwsim_new_edge_nl(struct sk_buff *msg, struct genl_info *info)
> struct hwsim_edge *e;
> u32 v0, v1;
>
> - if (!info->attrs[MAC802154_HWSIM_ATTR_RADIO_ID] &&
> + if (!info->attrs[MAC802154_HWSIM_ATTR_RADIO_ID] ||
> !info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE])
> return -EINVAL;
>
> --
> 2.25.1
>