fix possile NULL pointer dereference in ndo_get_iflink callback functions
Subsystems (4)
cover fix possile NULL pointer dereference in ndo_get_iflink callback functions
The four callback functions deferference the pointers without test. As ipoib_get_iflink failed, it is a good reason to fix the other three functions. Those functions will return zero on error, as valid ifindex greater than zero.
I understand that those simple patches should be emerged into a single patch. However, those files have be maintained by different maintainers. So, I split it for review. It also will be convenient to remove one or more patches with the rest not be affected.
Honggang Li (4):
infiniband/ipoib: fix possible NULL pointer dereference in
ipoib_get_iflink
ipvlan: fix possible NULL pointer dereference in ipvlan_get_iflink
macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink net/dsa: fix possible NULL pointer dereference in dsa_slave_get_iflink
drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 ++++- drivers/net/ipvlan/ipvlan_main.c | 5 ++++- drivers/net/macvlan.c | 4 +++- net/dsa/slave.c | 5 ++++- 4 files changed, 15 insertions(+), 4 deletions(-)
Signature · 6 lines
1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/4 infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Starting monitoring for VG vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]
Starting cgconfig service: Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d[FAILED]
Loading OpenIB kernel modules:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000120 IP: [<ffffffffa06b9060>] ipoib_get_iflink+0x10/0x20 [ib_ipoib] PGD 475540067 PUD 473541067 PMD 0 Oops: 0000 [#1] SMP Modules linked in: ib_ipoib(+) rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm
ib_cm ib_sa vhost_net macvtap macvlan vhost tun ipmi_devintf sg ipmi_si ipmi_msghandler serio_raw iTCO_wdt iTCO_vendor_support cdc_ether usbnet mii bnx2 intel_powerclamp coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel aesni_intel ablk_helper cryptd lrw gf128mul glue_helper aes_x86_64 microcode pcspkr i2c_i801 i2c_core lpc_ich mfd_core acpi_cpufreq ioatdma i7core_edac edac_core shpchp ext4(E) jbd2(E) mbcache(E) sd_mod(E) megaraid_sas(E) pata_acpi(E) ata_generic(E) ata_piix(E) iw_cxgb3(E) cxgb3(E) mdio(E) ib_qib(E) dca(E) ib_mad(E) iw_cxgb4(E) iw_cm(E) ib_core(E) ib_addr(E) ipv6(E) cxgb4(E) dm_mirror(E) dm_region_hash(E) dm_log(E) dm_mod(E)
CPU: 6 PID: 2405 Comm: modprobe Tainted: G E 4.0.0-next-20150413 #1 Hardware name: IBM System x3650 M3 -[7945O63]-/00D4062, BIOS -[D6E157AUS-1.15]- 06/13/2012 task: ffff880476ad6f00 ti: ffff88047579c000 task.ti: ffff88047579c000 RIP: 0010:[<ffffffffa06b9060>] [<ffffffffa06b9060>] ipoib_get_iflink+0x10/0x20 [ib_ipoib] RSP: 0018:ffff88047579f9b8 EFLAGS: 00010286 RAX: 0000000000000000 RBX: ffff880476e2a000 RCX: 0000000000000000 RDX: 0000000000000004 RSI: ffff88047579fbb8 RDI: ffff880476e2a000 RBP: ffff88047579f9b8 R08: 0000000000000660 R09: ffff88047404f068 R10: 0000000000000000 R11: 0000000000000000 R12: ffff8804736bec00 R13: ffff88047579fbb4 R14: ffff88047404f000 R15: 0000000000000009 FS: 00007fc047a2e700(0000) GS:ffff88047fc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 0000000000000120 CR3: 000000047541f000 CR4: 00000000000006e0 Stack: ffff88047579f9c8 ffffffff814fbfa3 ffff88047579fbe8 ffffffff81515a15 0000000000000005 ffff880476e2a280 0000000000000005 0000000000000014 ffff88047579fa48 ffffffff8150a577 0000000000000000 ffff8804ffffffff Call Trace: [<ffffffff814fbfa3>] dev_get_iflink+0x23/0x40 [<ffffffff81515a15>] rtnl_fill_ifinfo+0x255/0xce0 [<ffffffff8150a577>] ? __hw_addr_create_ex+0x97/0xc0 [<ffffffff815d32bb>] ? _raw_spin_unlock_bh+0x1b/0x20 [<ffffffff8150a8e5>] ? __dev_mc_add+0x75/0x90 [<ffffffffa00a115c>] ? igmp6_group_added+0x5c/0x130 [ipv6] [<ffffffff8119c6cc>] ? __kmalloc_node_track_caller+0x3c/0x50 [<ffffffff814f0f0b>] ? __kmalloc_reserve+0x3b/0xa0 [<ffffffff814f12f8>] ? __alloc_skb+0xa8/0x1f0 [<ffffffff81516783>] rtmsg_ifinfo_build_skb+0x83/0xe0 [<ffffffff81078fa6>] ? raw_notifier_call_chain+0x16/0x20 [<ffffffff81516801>] rtmsg_ifinfo+0x21/0x40 [<ffffffff81504eaf>] register_netdevice+0x38f/0x400 [<ffffffff81504f3e>] register_netdev+0x1e/0x30 [<ffffffffa06bc204>] ipoib_add_port.clone.0+0x214/0x390 [ib_ipoib] [<ffffffffa06bc447>] ipoib_add_one+0xc7/0x110 [ib_ipoib] [<ffffffffa00f9d4d>] ib_register_client+0x7d/0xa0 [ib_core] [<ffffffffa06ce000>] ? 0xffffffffa06ce000 [<ffffffffa06ce0f2>] ipoib_init_module+0xf2/0x13c [ib_ipoib] [<ffffffff81000287>] do_one_initcall+0xb7/0x1d0 [<ffffffff810d8189>] do_init_module+0x69/0x200 [<ffffffff810da985>] load_module+0x5b5/0x730 [<ffffffff810d79b0>] ? mod_sysfs_teardown+0x150/0x150 [<ffffffff81183232>] ? __vmalloc+0x22/0x30 [<ffffffff810d73c0>] ? module_sect_show+0x30/0x30 [<ffffffff810dac84>] SyS_init_module+0x94/0xc0 [<ffffffff815d3997>] system_call_fastpath+0x12/0x6a Code: 66 66 66 90 b9 1e 00 00 00 48 89 f0 48 8d 77 08 48 89 c7 f3 48 a5
c9 c3 0f 1f 00 55 48 89 e5 66 66 66 66 90 48 8b 87 e8 13 00 00 <8b> 80 20 01 00 00 c9 c3 0f 1f 84 00 00 00 00 00 55 48 89 e5 66 RIP [<ffffffffa06b9060>] ipoib_get_iflink+0x10/0x20 [ib_ipoib]
RSP <ffff88047579f9b8>
CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---
--- drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/infiniband/ulp/ipoib/ipoib_main.c +4 -1
@@ -846,7 +846,10 @@ static int ipoib_get_iflink(const struct net_device *dev) {struct ipoib_dev_priv *priv =netdev_priv (dev); -return priv->parent->ifindex; +if (priv && priv->parent) +return priv->parent->ifindex; +else +return 0 ; }static u32 ipoib_addr_hash (struct ipoib_neigh_hash *htbl,u8 *daddr)
Signature · 1 line
1.8.3.1
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 9 lines · Honggang Li
Starting monitoring for VG
vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---Signed-off-by Honggang Li <[email protected]>
When was this bug added ?
Please add a proper Fixes: tag
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 6 lines · Eric Dumazet
Quoted 3 lines · Honggang Li
Starting monitoring for VG
vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]
Quoted 7 lines
Quoted 4 lines
CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---Signed-off-by Honggang Li <[email protected]>When was this bug added ?
Sorry, I do not know. I ran into this bug today when I'm tracing a race condition issue related qib. In order to check upstream linux-next fix the race condition or not, I build linux-next-20150414 on two machines. Both machines panic at modprobe ib_ipoib. Do you means I need to report a bug? But I do not know report to who or where.
thanks
Quoted 3 lines
Please add a proper Fixes: tag
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 12 lines · Honggang LI
Quoted 11 lines · Eric Dumazet
Quoted 9 lines · Honggang Li
Starting monitoring for VG
vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---Signed-off-by Honggang Li <[email protected]>
Quoted 8 lines
Quoted 2 lines
When was this bug added ?
Sorry, I do not know. I ran into this bug today when I'm tracing a race condition issue related qib. In order to check upstream linux-next fix the race condition or not, I build linux-next-20150414 on two machines. Both machines panic at modprobe
ib_ipoib. Do you means I need to report a bug? But I do not know report to who or where.
Here is the tag:
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 16 lines · Nicolas Dichtel
Quoted 15 lines · Honggang LI
Quoted 13 lines · Eric Dumazet
Quoted 9 lines · Honggang Li
Starting monitoring for VG
vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---Signed-off-by Honggang Li <[email protected]>When was this bug added ?
Quoted 9 lines
Quoted 5 lines
Sorry, I do not know. I ran into this bug today when I'm tracing a race condition issue related qib. In order to check upstream linux-next fix the race condition or not, I build linux-next-20150414 on two machines. Both machines panic at modprobe
ib_ipoib. Do you means I need to report a bug? But I do not know report to who or where.Here is the tag:
Fixes 5aa7add8f14b ("infiniband/ipoib: implement ndo_get_iflink")
thank you.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 23 lines · Honggang LI
Quoted 22 lines · Nicolas Dichtel
Quoted 20 lines · Honggang LI
Quoted 6 lines · Eric Dumazet
Quoted 3 lines · Honggang Li
Starting monitoring for VG
vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]Quoted 7 lines
Quoted 4 lines
CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---Signed-off-by Honggang Li <[email protected]>When was this bug added ?
Sorry, I do not know. I ran into this bug today when I'm tracing a race condition issue related qib. In order to check upstream linux-next fix the race condition or not, I build linux-next-20150414 on two machines. Both machines panic at modprobe
ib_ipoib. Do you means I need to report a bug? But I do not know report to who or where.
Quoted 5 lines
Quoted 3 lines
Here is the tag:
Fixes 5aa7add8f14b ("infiniband/ipoib: implement ndo_get_iflink")thank you.
By adding a proper tag you :
1) Assert you did a research in git history/blame to find original commit.
2) You looked at other similar bugs added by this commit
3) Add meta information in git history to ease backports
4) CC original author to let him/her know he made a mistake and increase his/her knowledge.
5) Help maintainers
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
In reply to Nicolas DichtelHi Nicolas,
Quoted 16 lines · Nicolas Dichtel
Quoted 15 lines · Honggang LI
Quoted 13 lines · Eric Dumazet
Quoted 9 lines · Honggang Li
Starting monitoring for VG
vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---Signed-off-by Honggang Li <[email protected]>When was this bug added ?
Quoted 9 lines
Quoted 5 lines
Sorry, I do not know. I ran into this bug today when I'm tracing a race condition issue related qib. In order to check upstream linux-next fix the race condition or not, I build linux-next-20150414 on two machines. Both machines panic at modprobe
ib_ipoib. Do you means I need to report a bug? But I do not know report to who or where.Here is the tag:
Fixes 5aa7add8f14b ("infiniband/ipoib: implement ndo_get_iflink")
Pardon me, but this patch was never submitted to [email protected] for review !?
Regards.
Signature · 8 lines
Yann Droneaud OPTEYA -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Le 14/04/2015 18:01, Yann Droneaud a écrit :
[snip]
Quoted 6 lines
Quoted 3 lines
Here is the tag:
Fixes 5aa7add8f14b ("infiniband/ipoib: implement ndo_get_iflink")Pardon me, but this patch was never submitted to [email protected] for review !?
Sorry for that, I missed it. Only Roland Dreier was CCed.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
In reply to Honggang LiQuoted 1 line · Honggang Li
[...]
Hi,
drivers/infiniband/ulp/ipoib/ipoib_main.c static int ipoib_get_iflink(const struct net_device *dev) · line 852
Quoted 13 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +4
-1@@ -846,7 +846,10 @@ static int ipoib_get_iflink(const struct net_device *dev) {struct ipoib_dev_priv *priv =netdev_priv (dev); -return priv->parent->ifindex; +if (priv && priv->parent) +return priv->parent->ifindex; +else +return 0 ;
This will make parent interface to return 0 instead of its own ifindex. I would suggest write something like that:
+ /* parent interface */
+ if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags))
+ return dev->ifindex;
+
+ /* child/vlan interface */
+ if (!priv->parent)
+ return -1;
+
return priv->parent->ifindex;
Thanks,
Erez.
Quoted 6 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +0
-1}static u32 ipoib_addr_hash (struct ipoib_neigh_hash *htbl,u8 *daddr) --1.8.3.1
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 1 line · Erez Shitrit
On Tue, Apr 14, 2015 at 6:20 PM, Honggang Li <[email protected]> wrote:
[snip]
Review
Quoted 10 lines
This will make parent interface to return 0 instead of its own ifindex. I would suggest write something like that:
(quoted diff) +7
-0+ /* parent interface */ + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) + return dev->ifindex; + + /* child/vlan interface */ + if (!priv->parent) + return -1;
'return 0' here.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
In reply to Erez ShitritQuoted 7 lines · Erez Shitrit
Quoted 7 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +1
-0+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c@@ -846,7 +846,10 @@ static int ipoib_get_iflink(const struct net_device *dev) {struct ipoib_dev_priv *priv =netdev_priv (dev);
Quoted 7 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c static int ipoib_get_iflink(const struct net_device *dev) · line 852
Quoted 5 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +4
-1-return priv->parent->ifindex; +if (priv && priv->parent) +return priv->parent->ifindex; +else +return 0 ;This will make parent interface to return 0 instead of its own ifindex. I would suggest write something like that:
Agree
Review
Quoted 7 lines
(quoted diff) +7
-0+ /* parent interface */ + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) + return dev->ifindex; + + /* child/vlan interface */ + if (!priv->parent) + return -1;
Like was said for other drivers, I can't see how parent can be null while IPOIB_FLAG_SUBINTERFACE is set. Drop the last if.
Erez, you basically rewrote this, please make a proper patch with the Fixes and Reported-By credit for Honggang. Lets merge this through Dave M's tree right away.
Thank you all
Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 1 line · Jason Gunthorpe
Erez, you basically rewrote this, please make a proper patch with the Fixes and Reported-By credit for Honggang. Lets merge this through Dave M's tree right away.
Agree, Erez, add proper Fixes: XXX note and send a patch to netdev against net-next. No need for the lengthy crash dump there. Nicolas, next time you patch IPoIB, please cc linux-rdma. Or.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
In reply to Jason GunthorpeQuoted 25 lines · Jason Gunthorpe
Quoted 7 lines · Erez Shitrit
Quoted 7 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +1
-0+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c@@ -846,7 +846,10 @@ static int ipoib_get_iflink(const struct net_device *dev) {struct ipoib_dev_priv *priv =netdev_priv (dev);Quoted 7 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c static int ipoib_get_iflink(const struct net_device *dev) · line 852
Quoted 5 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +4
-1-return priv->parent->ifindex; +if (priv && priv->parent) +return priv->parent->ifindex; +else +return 0 ;This will make parent interface to return 0 instead of its own ifindex. I would suggest write something like that:
Agree
Review
Quoted 7 lines
(quoted diff) +7
-0+ /* parent interface */ + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) + return dev->ifindex; + + /* child/vlan interface */ + if (!priv->parent) + return -1;
Quoted 2 lines
Like was said for other drivers, I can't see how parent can be null while
IPOIB_FLAG_SUBINTERFACEis set. Drop the last if.
It can, at least for ipoib child interface (AKA "vlan"), you can't control the call for that ndo and it can be called before the parent was set.
Quoted 9 lines
Erez, you basically rewrote this, please make a proper patch with the Fixes and Reported-By credit for Honggang. Lets merge this through Dave M's tree right away.
Thank you all
Jason
.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 8 lines · Erez Shitrit
Quoted 7 lines
Quoted 7 lines
(quoted diff) +7
-0+ /* parent interface */ + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) + return dev->ifindex; + + /* child/vlan interface */ + if (!priv->parent) + return -1;
Quoted 6 lines
Quoted 2 lines
Like was said for other drivers, I can't see how parent can be null while
IPOIB_FLAG_SUBINTERFACEis set. Drop the last if.It can, at least for ipoib child interface (AKA "vlan"), you can't control the call for that ndo and it can be called before the parent was set.
If the ndo can be called before the netdev private structures are fully prepared then we have another bug, and returning -1 or 0 is not the right answer anyhow.
For safety, fold this into your patch.
drivers/infiniband/ulp/ipoib/ipoib_vlan.c +1 -2
@@ -58,6 +58,7 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct ipoib_dev_priv *priv,/* MTU will be reset when mcast join happens */ priv->dev->mtu =IPOIB_UD_MTU (priv->max_ib_mtu); priv->mcast_mtu = priv->admin_mtu = priv->dev->mtu; + priv->parent = ppriv->dev;set_bit (IPOIB_FLAG_SUBINTERFACE , &priv->flags); result =ipoib_set_dev_features (priv, ppriv->ca);
@@ -84,8 +85,6 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct ipoib_dev_priv *priv, goto register_failed; } - priv->parent = ppriv->dev; -ipoib_create_debug_files (priv->dev);/* RTNL childs don't need proprietary sysfs entries */
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Quoted 16 lines · Jason Gunthorpe
Quoted 8 lines · Erez Shitrit
Quoted 7 lines
Quoted 7 lines
(quoted diff) +7
-0+ /* parent interface */ + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) + return dev->ifindex; + + /* child/vlan interface */ + if (!priv->parent) + return -1;Quoted 6 lines
Quoted 2 lines
Like was said for other drivers, I can't see how parent can be null while
IPOIB_FLAG_SUBINTERFACEis set. Drop the last if.It can, at least for ipoib child interface (AKA "vlan"), you can't control the call for that ndo and it can be called before the parent was set.
Quoted 5 lines
If the ndo can be called before the netdev private structures are fully prepared then we have another bug, and returning -1 or 0 is not the right answer anyhow.
For safety, fold this into your patch.
OK, will do that.
Quoted 14 lines
drivers/infiniband/ulp/ipoib/ipoib_vlan.c +1
-0@@ -58,6 +58,7 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct ipoib_dev_priv *priv,/* MTU will be reset when mcast join happens */ priv->dev->mtu =IPOIB_UD_MTU (priv->max_ib_mtu); priv->mcast_mtu = priv->admin_mtu = priv->dev->mtu; + priv->parent = ppriv->dev;set_bit (IPOIB_FLAG_SUBINTERFACE , &priv->flags); result =ipoib_set_dev_features (priv, ppriv->ca);
drivers/infiniband/ulp/ipoib/ipoib_vlan.c int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct ipoib_dev_priv *priv, · line 90
Quoted 8 lines
drivers/infiniband/ulp/ipoib/ipoib_vlan.c +0
-2@@ -84,8 +85,6 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct ipoib_dev_priv *priv, goto register_failed; } - priv->parent = ppriv->dev; -ipoib_create_debug_files (priv->dev);/* RTNL childs don't need proprietary sysfs entries */
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
In reply to Erez ShitritQuoted 12 lines · Erez Shitrit
drivers/infiniband/ulp/ipoib/ipoib_main.c static int ipoib_get_iflink(const struct net_device *dev) · line 852
Quoted 9 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +4
-1@@ -846,7 +846,10 @@ static int ipoib_get_iflink(const struct net_device *dev) {struct ipoib_dev_priv *priv =netdev_priv (dev); -return priv->parent->ifindex; +if (priv && priv->parent) +return priv->parent->ifindex; +else +return 0 ;This will make parent interface to return 0 instead of its own ifindex. I would suggest write something like that:
Review
Quoted 4 lines
(quoted diff) +4
-0+ /* parent interface */ + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) + return dev->ifindex; +
Hi, Erez
Sorry for delay of reply. It was about 01:00 in the morning, so I went into bed. And thank you for the suggestion. You are right. After insert some printk statements in the driver, I confirmed it.
---------------------- console log --------------------ipoib_get_iflink: priv = ffff880275e487c0, priv->parent = (null), priv->flags = 0x20f, dev = ffff880275e48000, dev->name = qib_ib1 qib_ib1, test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags) = 0qib_ib1, idev->ifindex = 14
ipoib_get_iflink: priv = ffff8802765d27c0, priv->parent = (null), priv->flags = 0x20f, dev = ffff8802765d2000, dev->name = qib_ib2 qib_ib2, test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags) = 0qib_ib2, idev->ifindex = 15
ipoib_get_iflink: priv = ffff8804741a47c0, priv->parent = ffff880275e48000, priv->flags = 0x224, dev = ffff8804741a4000, dev->name = qib_ib1.8003 qib_ib1.8003, test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags) = 1
qib_ib1.8003, idev->ifindex = 16
---------------------- console log --------------------
I will rewrite the patch.
Quoted 6 lines
(quoted diff) +4
-0+ /* child/vlan interface */ + if (!priv->parent) + return -1; + return priv->parent->ifindex;
Quoted 9 lines
Thanks,
Erez.Quoted 6 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +0
-1}static u32 ipoib_addr_hash (struct ipoib_neigh_hash *htbl,u8 *daddr) --1.8.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 1/4] infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
There was network accident in the office. I can't find this email in public mailing list. So, I reset it. If you had recived this, please ignore it.
thanks
Quoted 33 lines · Honggang LI
Quoted 12 lines · Erez Shitrit
drivers/infiniband/ulp/ipoib/ipoib_main.c static int ipoib_get_iflink(const struct net_device *dev) · line 852
Quoted 9 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +4
-1@@ -846,7 +846,10 @@ static int ipoib_get_iflink(const struct net_device *dev) {struct ipoib_dev_priv *priv =netdev_priv (dev); -return priv->parent->ifindex; +if (priv && priv->parent) +return priv->parent->ifindex; +else +return 0 ;This will make parent interface to return 0 instead of its own ifindex. I would suggest write something like that:
Review
Quoted 4 lines
(quoted diff) +4
-0+ /* parent interface */ + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) + return dev->ifindex; +Hi, Erez
Sorry for delay of reply. It was about 01:00 in the morning, so I went into bed. And thank you for the suggestion. You are right. After insert some printk statements in the driver, I confirmed it.
---------------------- console log --------------------
ipoib_get_iflink: priv =ffff880275e487c0,priv->parent= (null),priv->flags=0x20f, dev =ffff880275e48000,dev->name=qib_ib1qib_ib1,test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)= 0qib_ib1,idev->ifindex= 14
ipoib_get_iflink: priv =ffff8802765d27c0,priv->parent= (null),priv->flags=0x20f, dev =ffff8802765d2000,dev->name=qib_ib2qib_ib2,test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)= 0qib_ib2,idev->ifindex= 15
Quoted 23 lines
ipoib_get_iflink: priv =ffff8804741a47c0,priv->parent=ffff880275e48000,priv->flags=0x224, dev =ffff8804741a4000,dev->name= qib_ib1.8003 qib_ib1.8003,test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)= 1
qib_ib1.8003,idev->ifindex= 16---------------------- console log --------------------
I will rewrite the patch.
Quoted 15 lines
(quoted diff) +4
-0+ /* child/vlan interface */ + if (!priv->parent) + return -1; + return priv->parent->ifindex;Thanks,
Erez.Quoted 6 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +0
-1}static u32 ipoib_addr_hash (struct ipoib_neigh_hash *htbl,u8 *daddr) --1.8.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/4 ipvlan: fix possible NULL pointer dereference in ipvlan_get_iflink
In reply to Honggang Li--- drivers/net/ipvlan/ipvlan_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/net/ipvlan/ipvlan_main.c +4 -1
@@ -308,7 +308,10 @@ static int ipvlan_get_iflink(const struct net_device *dev) {struct ipvl_dev *ipvlan =netdev_priv (dev); -return ipvlan->phy_dev->ifindex; +if (ipvlan && pvlan->phy_dev) +return ipvlan->phy_dev->ifindex; +else +return 0 ; }static const struct net_device_ops ipvlan_netdev_ops = {
Signature · 1 line
1.8.3.1
PATCH 3/4 macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
In reply to Honggang Li--- drivers/net/macvlan.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/net/macvlan.c +3 -1
@@ -998,7 +998,9 @@ static int macvlan_dev_get_iflink(const struct net_device *dev) {struct macvlan_dev *vlan =netdev_priv (dev); -return vlan->lowerdev->ifindex; +if (vlan && vlan->lowerdev) +return vlan->lowerdev->ifindex; +return 0 ; }static const struct ethtool_ops macvlan_ethtool_ops = {
Signature · 6 lines
1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 3/4] macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
Quoted 10 lines · Honggang Li
Signed-off-by Honggang Li <[email protected]>--- drivers/net/macvlan.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)drivers/net/macvlan.c +0
-0
drivers/net/macvlan.c static int macvlan_dev_get_iflink(const struct net_device *dev) · line 1002
Quoted 6 lines
drivers/net/macvlan.c +2
-1@@ -998,7 +998,9 @@ static int macvlan_dev_get_iflink(const struct net_device *dev) {struct macvlan_dev *vlan =netdev_priv (dev); -return vlan->lowerdev->ifindex; +if (vlan && vlan->lowerdev) +return vlan->lowerdev->ifindex;
That is completely useless. vlan (=netdev_priv) can not be NULL as netdev_priv() never returns NULL and vlan->lowerdev is always valid because a macvlan wouldn't make much sense otherwise.
Re: [PATCH linux-next 3/4] macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
Quoted 4 lines · Patrick McHardy
That is completely useless. vlan (=netdev_priv) can not be NULL as
netdev_priv()never returns NULL andvlan->lowerdevis always valid because a macvlan wouldn't make much sense otherwise.
OK, please drop this patch.
thanks
Re: [PATCH linux-next 3/4] macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
Quoted 7 lines · Honggang LI
Quoted 4 lines · Patrick McHardy
That is completely useless. vlan (=netdev_priv) can not be NULL as
netdev_priv()never returns NULL andvlan->lowerdevis always valid because a macvlan wouldn't make much sense otherwise.OK, please drop this patch.
Well, the fact that netdev_priv never return NULL implies all your patches need to be redone.
And I suggest you check whether this condition can actually happen. Just because it can in one driver says nothing at all about others.
David Miller
maintainerRe: [PATCH linux-next 3/4] macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
In reply to Honggang LIFrom: Honggang LI <[email protected]>
Date: Tue, 14 Apr 2015 23:32:39 +0800
Quoted 7 lines · Patrick McHardy
Quoted 4 lines
That is completely useless. vlan (=netdev_priv) can not be NULL as
netdev_priv()never returns NULL andvlan->lowerdevis always valid because a macvlan wouldn't make much sense otherwise.OK, please drop this patch.
That's not how this works.
When a patch series needs any chnages, you must make a fresh, new complete submission of the entire patch series.
Re: [PATCH linux-next 3/4] macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
In reply to Patrick McHardyQuoted 1 line · Patrick McHardy
On 14.04, Honggang Li wrote:
[snip]
Quoted 8 lines
drivers/net/macvlan.c static int macvlan_dev_get_iflink(const struct net_device *dev) · line 1002
Quoted 3 lines
drivers/net/macvlan.c +2
-1-return vlan->lowerdev->ifindex; +if (vlan && vlan->lowerdev) +return vlan->lowerdev->ifindex;That is completely useless. vlan (=netdev_priv) can not be NULL as
netdev_priv()never returns NULL andvlan->lowerdevis always valid because a macvlan wouldn't make much sense otherwise.
And I suspect that it is the same for ipvlan and dsa.
Andrew Lunn
maintainerRe: [PATCH linux-next 3/4] macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
Quoted 11 lines · Nicolas Dichtel
Quoted 1 line · Patrick McHardy
On 14.04, Honggang Li wrote:
[snip]
Quoted 8 lines
drivers/net/macvlan.c static int macvlan_dev_get_iflink(const struct net_device *dev) · line 1002
Quoted 3 lines
drivers/net/macvlan.c +2
-1-return vlan->lowerdev->ifindex; +if (vlan && vlan->lowerdev) +return vlan->lowerdev->ifindex;That is completely useless. vlan (=netdev_priv) can not be NULL as
netdev_priv()never returns NULL andvlan->lowerdevis always valid because a macvlan wouldn't make much sense otherwise.
Quoted 1 line
And I suspect that it is the same for ipvlan and dsa.
I agree about DSA. I don't see any way this could happen.
Andrew
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH linux-next 3/4] macvlan: fix possible NULL pointer dereference in macvlan_dev_get_iflink
Quoted 6 lines · Andrew Lunn
Quoted 2 lines
Quoted 1 line
And I suspect that it is the same for ipvlan and dsa.
I agree about DSA. I don't see any way this could happen.
Andrew
I only keep the ipoib patch and drop the rest patches.
thanks
PATCH 4/4 net/dsa: fix possible NULL pointer dereference in dsa_slave_get_iflink
In reply to Honggang Li--- net/dsa/slave.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
net/dsa/slave.c +4 -1
@@ -59,7 +59,10 @@ static int dsa_slave_get_iflink(const struct net_device *dev) {struct dsa_slave_priv *p =netdev_priv (dev); -return p->parent->dst->master_netdev->ifindex; +if (p && p->parent && p->parent->dst && p->parent->dst->master_netdev) +return p->parent->dst->master_netdev->ifindex; +else +return 0 ; }static inline bool dsa_port_is_bridged (struct dsa_slave_priv *p)
Signature · 1 line
1.8.3.1
Re: [PATCH linux-next 4/4] net/dsa: fix possible NULL pointer dereference in dsa_slave_get_iflink
Quoted 10 lines · Honggang Li
Signed-off-by Honggang Li <[email protected]>--- net/dsa/slave.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)net/dsa/slave.c +0
-0
net/dsa/slave.c static int dsa_slave_get_iflink(const struct net_device *dev) · line 66
Quoted 9 lines
net/dsa/slave.c +4
-1@@ -59,7 +59,10 @@ static int dsa_slave_get_iflink(const struct net_device *dev) {struct dsa_slave_priv *p =netdev_priv (dev); -return p->parent->dst->master_netdev->ifindex; +if (p && p->parent && p->parent->dst && p->parent->dst->master_netdev) +return p->parent->dst->master_netdev->ifindex; +else +return 0 ; }
I would expect some explanation why you believe that any of those pointers can be NULL.
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/1 infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
In reply to Honggang Li1) Droped ipvlan/macvlan/dsa patches.
2) Do not check the pointer returned by netdev_priv.
3) Add the FIX tag.
--------------------- console log ---------------
ipoib_get_iflink dev = ffff88026eb1c000, priv = ffff88026eb1c7c0, priv->parent = (null) ipoib_get_iflink dev = ffff88026eb1c000, priv = ffff88026eb1c7c0, priv->parent = (null) ipoib_get_iflink dev = ffff880225c8a000, priv = ffff880225c8a7c0, priv->parent = (null) ipoib_get_iflink dev = ffff880225c8a000, priv = ffff880225c8a7c0, priv->parent = (null) [ OK ] ipoib_get_iflink dev = ffff88026eb1c000, priv = ffff88026eb1c7c0, priv->parent = (null) ipoib_get_iflink dev = ffff88026eb1c000, priv = ffff88026eb1c7c0, priv->parent = (null) ipoib_get_iflink dev = ffff880225c8a000, priv = ffff880225c8a7c0, priv->parent = (null) ipoib_get_iflink dev = ffff880225c8a000, priv = ffff880225c8a7c0, priv->parent = (null) Shutting down interface cxgb4_1: ipoib_get_iflink dev = ffff88026eb1c000, priv = ffff88026eb1c7c0, priv->parent = (null) ipoib_get_iflink dev = ffff88026eb1c000, priv = ffff88026eb1c7c0, priv->parent = (null) ipoib_get_iflink dev = ffff880225c8a000, priv = ffff880225c8a7c0, priv->parent = (null) ipoib_get_iflink dev = ffff880225c8a000, priv = ffff880225c8a7c0, priv->parent = (null)
--------------------- console log ---------------
Honggang Li (1):
infiniband/ipoib: fix possible NULL pointer dereference in
ipoib_get_iflink
drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
Signature · 6 lines
1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/1 infiniband/ipoib: fix possible NULL pointer dereference in ipoib_get_iflink
Starting monitoring for VG vg_rdma01: 3 logical volume(s) in volume
group "vg_rdma01" monitored
[ OK ]
Starting cgconfig service: Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d[FAILED]
Loading OpenIB kernel modules:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000120 IP: [<ffffffffa06b9060>] ipoib_get_iflink+0x10/0x20 [ib_ipoib] PGD 475540067 PUD 473541067 PMD 0 Oops: 0000 [#1] SMP Modules linked in: ib_ipoib(+) rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm
ib_cm ib_sa vhost_net macvtap macvlan vhost tun ipmi_devintf sg ipmi_si ipmi_msghandler serio_raw iTCO_wdt iTCO_vendor_support cdc_ether usbnet mii bnx2 intel_powerclamp coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel aesni_intel ablk_helper cryptd lrw gf128mul glue_helper aes_x86_64 microcode pcspkr i2c_i801 i2c_core lpc_ich mfd_core acpi_cpufreq ioatdma i7core_edac edac_core shpchp ext4(E) jbd2(E) mbcache(E) sd_mod(E) megaraid_sas(E) pata_acpi(E) ata_generic(E) ata_piix(E) iw_cxgb3(E) cxgb3(E) mdio(E) ib_qib(E) dca(E) ib_mad(E) iw_cxgb4(E) iw_cm(E) ib_core(E) ib_addr(E) ipv6(E) cxgb4(E) dm_mirror(E) dm_region_hash(E) dm_log(E) dm_mod(E)
CPU: 6 PID: 2405 Comm: modprobe Tainted: G E 4.0.0-next-20150413 #1 Hardware name: IBM System x3650 M3 -[7945O63]-/00D4062, BIOS -[D6E157AUS-1.15]- 06/13/2012 task: ffff880476ad6f00 ti: ffff88047579c000 task.ti: ffff88047579c000 RIP: 0010:[<ffffffffa06b9060>] [<ffffffffa06b9060>] ipoib_get_iflink+0x10/0x20 [ib_ipoib] RSP: 0018:ffff88047579f9b8 EFLAGS: 00010286 RAX: 0000000000000000 RBX: ffff880476e2a000 RCX: 0000000000000000 RDX: 0000000000000004 RSI: ffff88047579fbb8 RDI: ffff880476e2a000 RBP: ffff88047579f9b8 R08: 0000000000000660 R09: ffff88047404f068 R10: 0000000000000000 R11: 0000000000000000 R12: ffff8804736bec00 R13: ffff88047579fbb4 R14: ffff88047404f000 R15: 0000000000000009 FS: 00007fc047a2e700(0000) GS:ffff88047fc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 0000000000000120 CR3: 000000047541f000 CR4: 00000000000006e0 Stack: ffff88047579f9c8 ffffffff814fbfa3 ffff88047579fbe8 ffffffff81515a15 0000000000000005 ffff880476e2a280 0000000000000005 0000000000000014 ffff88047579fa48 ffffffff8150a577 0000000000000000 ffff8804ffffffff Call Trace: [<ffffffff814fbfa3>] dev_get_iflink+0x23/0x40 [<ffffffff81515a15>] rtnl_fill_ifinfo+0x255/0xce0 [<ffffffff8150a577>] ? __hw_addr_create_ex+0x97/0xc0 [<ffffffff815d32bb>] ? _raw_spin_unlock_bh+0x1b/0x20 [<ffffffff8150a8e5>] ? __dev_mc_add+0x75/0x90 [<ffffffffa00a115c>] ? igmp6_group_added+0x5c/0x130 [ipv6] [<ffffffff8119c6cc>] ? __kmalloc_node_track_caller+0x3c/0x50 [<ffffffff814f0f0b>] ? __kmalloc_reserve+0x3b/0xa0 [<ffffffff814f12f8>] ? __alloc_skb+0xa8/0x1f0 [<ffffffff81516783>] rtmsg_ifinfo_build_skb+0x83/0xe0 [<ffffffff81078fa6>] ? raw_notifier_call_chain+0x16/0x20 [<ffffffff81516801>] rtmsg_ifinfo+0x21/0x40 [<ffffffff81504eaf>] register_netdevice+0x38f/0x400 [<ffffffff81504f3e>] register_netdev+0x1e/0x30 [<ffffffffa06bc204>] ipoib_add_port.clone.0+0x214/0x390 [ib_ipoib] [<ffffffffa06bc447>] ipoib_add_one+0xc7/0x110 [ib_ipoib] [<ffffffffa00f9d4d>] ib_register_client+0x7d/0xa0 [ib_core] [<ffffffffa06ce000>] ? 0xffffffffa06ce000 [<ffffffffa06ce0f2>] ipoib_init_module+0xf2/0x13c [ib_ipoib] [<ffffffff81000287>] do_one_initcall+0xb7/0x1d0 [<ffffffff810d8189>] do_init_module+0x69/0x200 [<ffffffff810da985>] load_module+0x5b5/0x730 [<ffffffff810d79b0>] ? mod_sysfs_teardown+0x150/0x150 [<ffffffff81183232>] ? __vmalloc+0x22/0x30 [<ffffffff810d73c0>] ? module_sect_show+0x30/0x30 [<ffffffff810dac84>] SyS_init_module+0x94/0xc0 [<ffffffff815d3997>] system_call_fastpath+0x12/0x6a Code: 66 66 66 90 b9 1e 00 00 00 48 89 f0 48 8d 77 08 48 89 c7 f3 48 a5
c9 c3 0f 1f 00 55 48 89 e5 66 66 66 66 90 48 8b 87 e8 13 00 00 <8b> 80 20 01 00 00 c9 c3 0f 1f 84 00 00 00 00 00 55 48 89 e5 66 RIP [<ffffffffa06b9060>] ipoib_get_iflink+0x10/0x20 [ib_ipoib]
RSP <ffff88047579f9b8>
CR2: 0000000000000120
---[ end trace a8610f6e9640eb85 ]---
--- drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/infiniband/ulp/ipoib/ipoib_main.c +4 -1
@@ -846,7 +846,10 @@ static int ipoib_get_iflink(const struct net_device *dev) {struct ipoib_dev_priv *priv =netdev_priv (dev); -return priv->parent->ifindex; +if (priv->parent) +return priv->parent->ifindex; +else +return 0 ; }static u32 ipoib_addr_hash (struct ipoib_neigh_hash *htbl,u8 *daddr)
Signature · 6 lines
1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html