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>