Message ID | 20230214135035.1202471-3-miquel.raynal@bootlin.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | ieee802154: Scan/Beacon fixes | expand |
On Tue, Feb 14, 2023 at 2:50 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > Instead of printing error messages in the kernel log, let's use extack. > When there is a netlink error returned that could be further specified > with a string, use extack as well. > > Apply this logic to the very recent scan/beacon infrastructure. > > Fixes: ed3557c947e1 ("ieee802154: Add support for user scanning requests") > Fixes: 9bc114504b07 ("ieee802154: Add support for user beaconing requests") > Suggested-by: Jakub Kicinski <kuba@kernel.org> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > --- > net/ieee802154/nl802154.c | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) > > diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c > index 64fa811e1f0b..d3b6e9e80941 100644 > --- a/net/ieee802154/nl802154.c > +++ b/net/ieee802154/nl802154.c > @@ -1407,9 +1407,15 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info) > u8 type; > int err; > > - /* Monitors are not allowed to perform scans */ > - if (wpan_dev->iftype == NL802154_IFTYPE_MONITOR) > + if (wpan_dev->iftype == NL802154_IFTYPE_MONITOR) { > + NL_SET_ERR_MSG(info->extack, "Monitors are not allowed to perform scans"); > return -EPERM; > + } > + > + if (!nla_get_u8(info->attrs[NL802154_ATTR_SCAN_TYPE])) { syzbot crashes hosts by _not_ adding NL802154_ATTR_SCAN_TYPE attribute. Did you mean to write : diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c index 2215f576ee3788f74ea175b046d05d285bac752d..d8f4379d4fa68b5b07bb2c45cd74d4b73213c107 100644 --- a/net/ieee802154/nl802154.c +++ b/net/ieee802154/nl802154.c @@ -1412,7 +1412,7 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info) return -EOPNOTSUPP; } - if (!nla_get_u8(info->attrs[NL802154_ATTR_SCAN_TYPE])) { + if (!info->attrs[NL802154_ATTR_SCAN_TYPE]) { NL_SET_ERR_MSG(info->extack, "Malformed request, missing scan type"); return -EINVAL; } > + NL_SET_ERR_MSG(info->extack, "Malformed request, missing scan type"); > + return -EINVAL; > + } > > request = kzalloc(sizeof(*request), GFP_KERNEL); > if (!request) > @@ -1424,7 +1430,7 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info) > request->type = type; > break; > default: > - pr_err("Unsupported scan type: %d\n", type); > + NL_SET_ERR_MSG_FMT(info->extack, "Unsupported scan type: %d", type); > err = -EINVAL; > goto free_request; > } > @@ -1576,12 +1582,13 @@ nl802154_send_beacons(struct sk_buff *skb, struct genl_info *info) > struct cfg802154_beacon_request *request; > int err; > > - /* Only coordinators can send beacons */ > - if (wpan_dev->iftype != NL802154_IFTYPE_COORD) > + if (wpan_dev->iftype != NL802154_IFTYPE_COORD) { > + NL_SET_ERR_MSG(info->extack, "Only coordinators can send beacons"); > return -EOPNOTSUPP; > + } > > if (wpan_dev->pan_id == cpu_to_le16(IEEE802154_PANID_BROADCAST)) { > - pr_err("Device is not part of any PAN\n"); > + NL_SET_ERR_MSG(info->extack, "Device is not part of any PAN"); > return -EPERM; > } > > -- > 2.34.1 >
Hi Eric, edumazet@google.com wrote on Mon, 27 Feb 2023 21:41:51 +0100: > On Tue, Feb 14, 2023 at 2:50 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > > > Instead of printing error messages in the kernel log, let's use extack. > > When there is a netlink error returned that could be further specified > > with a string, use extack as well. > > > > Apply this logic to the very recent scan/beacon infrastructure. > > > > Fixes: ed3557c947e1 ("ieee802154: Add support for user scanning requests") > > Fixes: 9bc114504b07 ("ieee802154: Add support for user beaconing requests") > > Suggested-by: Jakub Kicinski <kuba@kernel.org> > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > > --- > > net/ieee802154/nl802154.c | 19 +++++++++++++------ > > 1 file changed, 13 insertions(+), 6 deletions(-) > > > > diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c > > index 64fa811e1f0b..d3b6e9e80941 100644 > > --- a/net/ieee802154/nl802154.c > > +++ b/net/ieee802154/nl802154.c > > @@ -1407,9 +1407,15 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info) > > u8 type; > > int err; > > > > - /* Monitors are not allowed to perform scans */ > > - if (wpan_dev->iftype == NL802154_IFTYPE_MONITOR) > > + if (wpan_dev->iftype == NL802154_IFTYPE_MONITOR) { > > + NL_SET_ERR_MSG(info->extack, "Monitors are not allowed to perform scans"); > > return -EPERM; > > + } > > + > > + if (!nla_get_u8(info->attrs[NL802154_ATTR_SCAN_TYPE])) { > > syzbot crashes hosts by _not_ adding NL802154_ATTR_SCAN_TYPE attribute. I was looking at Sanan Hasanov's e-mail, I believe this is the same breakage that is being reported? Link: https://lore.kernel.org/netdev/IA1PR07MB98302CDCC21F6BA664FB7298ABAF9@IA1PR07MB9830.namprd07.prod.outlook.com/ > Did you mean to write : > > diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c > index 2215f576ee3788f74ea175b046d05d285bac752d..d8f4379d4fa68b5b07bb2c45cd74d4b73213c107 > 100644 > --- a/net/ieee802154/nl802154.c > +++ b/net/ieee802154/nl802154.c > @@ -1412,7 +1412,7 @@ static int nl802154_trigger_scan(struct sk_buff > *skb, struct genl_info *info) > return -EOPNOTSUPP; > } > > - if (!nla_get_u8(info->attrs[NL802154_ATTR_SCAN_TYPE])) { > + if (!info->attrs[NL802154_ATTR_SCAN_TYPE]) { That is absolutely what I intended to do, I will send a fix immediately. > NL_SET_ERR_MSG(info->extack, "Malformed request, > missing scan type"); > return -EINVAL; > } > Thanks a lot, Miquèl
diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c index 64fa811e1f0b..d3b6e9e80941 100644 --- a/net/ieee802154/nl802154.c +++ b/net/ieee802154/nl802154.c @@ -1407,9 +1407,15 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info) u8 type; int err; - /* Monitors are not allowed to perform scans */ - if (wpan_dev->iftype == NL802154_IFTYPE_MONITOR) + if (wpan_dev->iftype == NL802154_IFTYPE_MONITOR) { + NL_SET_ERR_MSG(info->extack, "Monitors are not allowed to perform scans"); return -EPERM; + } + + if (!nla_get_u8(info->attrs[NL802154_ATTR_SCAN_TYPE])) { + NL_SET_ERR_MSG(info->extack, "Malformed request, missing scan type"); + return -EINVAL; + } request = kzalloc(sizeof(*request), GFP_KERNEL); if (!request) @@ -1424,7 +1430,7 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info) request->type = type; break; default: - pr_err("Unsupported scan type: %d\n", type); + NL_SET_ERR_MSG_FMT(info->extack, "Unsupported scan type: %d", type); err = -EINVAL; goto free_request; } @@ -1576,12 +1582,13 @@ nl802154_send_beacons(struct sk_buff *skb, struct genl_info *info) struct cfg802154_beacon_request *request; int err; - /* Only coordinators can send beacons */ - if (wpan_dev->iftype != NL802154_IFTYPE_COORD) + if (wpan_dev->iftype != NL802154_IFTYPE_COORD) { + NL_SET_ERR_MSG(info->extack, "Only coordinators can send beacons"); return -EOPNOTSUPP; + } if (wpan_dev->pan_id == cpu_to_le16(IEEE802154_PANID_BROADCAST)) { - pr_err("Device is not part of any PAN\n"); + NL_SET_ERR_MSG(info->extack, "Device is not part of any PAN"); return -EPERM; }
Instead of printing error messages in the kernel log, let's use extack. When there is a netlink error returned that could be further specified with a string, use extack as well. Apply this logic to the very recent scan/beacon infrastructure. Fixes: ed3557c947e1 ("ieee802154: Add support for user scanning requests") Fixes: 9bc114504b07 ("ieee802154: Add support for user beaconing requests") Suggested-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- net/ieee802154/nl802154.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)