In the Linux kernel, the following vulnerability has been resolved:
igc: avoid kernel warning when changing RX ring parameters
Calling ethtool changing the RX ring parameters like this:
$ ethtool -G eth0 rx 1024
on igc triggers kernel warnings like this:
[ 225.198467] ------------[ cut here ]------------ [ 225.198473] Missing unregister, handled but fix driver [ 225.198485] WARNING: CPU: 7 PID: 959 at net/core/xdp.c:168 xdprxqinforeg+0x79/0xd0 [...] [ 225.198601] Call Trace: [ 225.198604] <TASK> [ 225.198609] igcsetuprxresources+0x3f/0xe0 [igc] [ 225.198617] igcethtoolsetringparam+0x30e/0x450 [igc] [ 225.198626] ethnlsetrings+0x18a/0x250 [ 225.198631] genlfamilyrcvmsgdoit+0xca/0x110 [ 225.198637] genlrcvmsg+0xce/0x1c0 [ 225.198640] ? ringspreparedata+0x60/0x60 [ 225.198644] ? genlgetcmd+0xd0/0xd0 [ 225.198647] netlinkrcvskb+0x4e/0xf0 [ 225.198652] genlrcv+0x24/0x40 [ 225.198655] netlinkunicast+0x20e/0x330 [ 225.198659] netlinksendmsg+0x23f/0x480 [ 225.198663] socksendmsg+0x5b/0x60 [ 225.198667] _syssendto+0xf0/0x160 [ 225.198671] ? handlemmfault+0xb2/0x280 [ 225.198676] ? douseraddrfault+0x1eb/0x690 [ 225.198680] _x64syssendto+0x20/0x30 [ 225.198683] dosyscall64+0x38/0x90 [ 225.198687] entrySYSCALL64after_hwframe+0x44/0xae [ 225.198693] RIP: 0033:0x7f7ae38ac3aa
igcethtoolsetringparam() copies the igcring structure but neglects to reset the xdprxqinfo member before calling igcsetuprxresources(). This in turn calls xdprxqinforeg() with an already registered xdprxqinfo.
Make sure to unregister the xdprxqinfo structure first in igcsetuprx_resources.