Commit 87023e10 authored by Alexander Aring's avatar Alexander Aring Committed by Marcel Holtmann

ieee802154: fix iface dump with lowpan

This patch adds a hacked solution for an interface dump with a running
lowpan interface. This will crash because lowpan and wpan interface use
the same arphdr. To change the arphdr will change the UAPI, this patch
checks on mtu which should on lowpan interface always different than
IEEE802154_MTU.
Signed-off-by: default avatarAlexander Aring <alex.aring@gmail.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 7bea1ea7
...@@ -166,7 +166,10 @@ static struct net_device *ieee802154_nl_get_dev(struct genl_info *info) ...@@ -166,7 +166,10 @@ static struct net_device *ieee802154_nl_get_dev(struct genl_info *info)
if (!dev) if (!dev)
return NULL; return NULL;
if (dev->type != ARPHRD_IEEE802154) { /* Check on mtu is currently a hacked solution because lowpan
* and wpan have the same ARPHRD type.
*/
if (dev->type != ARPHRD_IEEE802154 || dev->mtu != IEEE802154_MTU) {
dev_put(dev); dev_put(dev);
return NULL; return NULL;
} }
...@@ -448,7 +451,11 @@ int ieee802154_dump_iface(struct sk_buff *skb, struct netlink_callback *cb) ...@@ -448,7 +451,11 @@ int ieee802154_dump_iface(struct sk_buff *skb, struct netlink_callback *cb)
idx = 0; idx = 0;
for_each_netdev(net, dev) { for_each_netdev(net, dev) {
if (idx < s_idx || (dev->type != ARPHRD_IEEE802154)) /* Check on mtu is currently a hacked solution because lowpan
* and wpan have the same ARPHRD type.
*/
if (idx < s_idx || dev->type != ARPHRD_IEEE802154 ||
dev->mtu != IEEE802154_MTU)
goto cont; goto cont;
if (ieee802154_nl_fill_iface(skb, NETLINK_CB(cb->skb).portid, if (ieee802154_nl_fill_iface(skb, NETLINK_CB(cb->skb).portid,
...@@ -782,7 +789,11 @@ ieee802154_llsec_dump_table(struct sk_buff *skb, struct netlink_callback *cb, ...@@ -782,7 +789,11 @@ ieee802154_llsec_dump_table(struct sk_buff *skb, struct netlink_callback *cb,
int rc; int rc;
for_each_netdev(net, dev) { for_each_netdev(net, dev) {
if (idx < first_dev || dev->type != ARPHRD_IEEE802154) /* Check on mtu is currently a hacked solution because lowpan
* and wpan have the same ARPHRD type.
*/
if (idx < first_dev || dev->type != ARPHRD_IEEE802154 ||
dev->mtu != IEEE802154_MTU)
goto skip; goto skip;
data.ops = ieee802154_mlme_ops(dev); data.ops = ieee802154_mlme_ops(dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment