In the Linux kernel, the following vulnerability has been resolved:
net: macvlan: fix memory leaks of macvlancommonnewlink
kmemleak reports memory leaks in macvlancommonnewlink, as follows:
ip link add link eth0 name .. type macvlan mode source macaddr add <MAC-ADDR>
kmemleak reports:
unreferenced object 0xffff8880109bb140 (size 64): comm "ip", pid 284, jiffies 4294986150 (age 430.108s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 b8 aa 5a 12 80 88 ff ff ..........Z..... 80 1b fa 0d 80 88 ff ff 1e ff ac af c7 c1 6b 6b ..............kk backtrace: [<ffffffff813e06a7>] kmemcachealloctrace+0x1c7/0x300 [<ffffffff81b66025>] macvlanhashaddsource+0x45/0xc0 [<ffffffff81b66a67>] macvlanchangelinksources+0xd7/0x170 [<ffffffff81b6775c>] macvlancommonnewlink+0x38c/0x5a0 [<ffffffff81b6797e>] macvlannewlink+0xe/0x20 [<ffffffff81d97f8f>] _rtnlnewlink+0x7af/0xa50 [<ffffffff81d98278>] rtnlnewlink+0x48/0x70 ...
In the scenario where the macvlan mode is configured as 'source', macvlanchangelinksources() will be execured to reconfigure list of remote source mac addresses, at the same time, if registernetdevice() return an error, the resource generated by macvlanchangelink_sources() is not cleaned up.
Using this patch, in the case of an error, it will execute macvlanflushsources() to ensure that the resource is cleaned up.