]> www.infradead.org Git - users/jedix/linux-maple.git/commit
xsigo: PCA 2.3.1 Compute Node panics in xve_create_arp+430
authorPradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Tue, 29 Aug 2017 18:59:54 +0000 (11:59 -0700)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 30 Aug 2017 20:52:20 +0000 (13:52 -0700)
commit2f579fb96862defabf07983245d85b342476717a
treee8a50b406b81a7e0772a6b7d7db7a582f9585b52
parent25571edd527ecf080be2e498499fe926ae213f56
xsigo: PCA 2.3.1 Compute Node panics in xve_create_arp+430

Orabug: 26474000

After some idle time on a RC connection xve driver cleans up the idle entry
and by that time arp entry for that address would be flushed out.
Further, traffic re-establishment for that address is taken care by arps
generated by the system. But its not rare that arp entry for that
address is still present with driver cleaned up the path and in that
case xve driver generates arp/ndp packets to resolve the path.

While generating an vlan based arp, xve driver uses "vlan_eth_hdr" API
to fill vlan specific data. This API works as expected only if skb
mac_header is initialized to proper value before using API.
In xve_create_arp and xve_create_ndp newly allocated skb's will not have
correct mac_header offset and as a result the pointer returned by
vlan_eth_hdr function is not the correct address to use, some times this
will result in a kernel panic.

Call Trace:
BUG: unable to handle kernel paging request at ffff88005a47060b
IP: [<ffffffffa12e3614>] xve_create_arp+0x1ae/0x200 [xve]

The fix here is to directly typecast skb->data instead of using
"vlan_eth_hdr" API.

This change in xve of using "vlan_eth_hdr" was mostly introduced during
EDR/uVNIC development and is applicable only for UEK4.

Signed-off-by: Pradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Reviewed-by: Chien Yen <chien.yen@oracle.com>
drivers/infiniband/ulp/xsigo/xscore/Makefile
drivers/infiniband/ulp/xsigo/xsvhba/Makefile
drivers/infiniband/ulp/xsigo/xsvnic/Makefile
drivers/infiniband/ulp/xsigo/xve/Makefile
drivers/infiniband/ulp/xsigo/xve/xve.h
drivers/infiniband/ulp/xsigo/xve/xve_main.c