On Tue, Feb 14, 2023 at 2:50 PM Miquel Raynal <miquel.raynal@xxxxxxxxxxx> 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@xxxxxxxxxx> > Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> > --- > 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 >