In the Linux kernel, the following vulnerability has been resolved:
net: batman-adv: fix error handling
Syzbot reported ODEBUG warning in batadvncmeshfree(). The problem was in wrong error handling in batadvmesh_init().
Before this patch batadvmeshinit() was calling batadvmeshfree() in case of any batadv_*_init() calls failure. This approach may work well, when there is some kind of indicator, which can tell which parts of batadv are initialized; but there isn't any.
All written above lead to cleaning up uninitialized fields. Even if we hide ODEBUG warning by initializing batpriv->nc.work, syzbot was able to hit GPF in batadvncpurgepaths(), because hash pointer in still NULL. [1]
To fix these bugs we can unwind batadv_*init() calls one by one. It is good approach for 2 reasons: 1) It fixes bugs on error handling path 2) It improves the performance, since we won't call unneeded batadv*_free() functions.
So, this patch makes all batadv_*init() clean up all allocated memory before returning with an error to no call correspoing batadv*free() and open-codes batadvmesh_free() with proper order to avoid touching uninitialized fields.
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2021-47482.json"
[
{
"events": [
{
"introduced": "2.6.38"
},
{
"fixed": "4.4.293"
}
]
},
{
"events": [
{
"introduced": "4.5"
},
{
"fixed": "4.9.289"
}
]
},
{
"events": [
{
"introduced": "4.10"
},
{
"fixed": "4.14.254"
}
]
},
{
"events": [
{
"introduced": "4.15"
},
{
"fixed": "4.19.215"
}
]
},
{
"events": [
{
"introduced": "4.20"
},
{
"fixed": "5.4.157"
}
]
},
{
"events": [
{
"introduced": "5.5"
},
{
"fixed": "5.10.77"
}
]
},
{
"events": [
{
"introduced": "5.11"
},
{
"fixed": "5.14.16"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.15-rc1"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.15-rc2"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.15-rc3"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.15-rc4"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.15-rc5"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.15-rc6"
}
]
},
{
"events": [
{
"introduced": "0"
},
{
"last_affected": "5.15-rc7"
}
]
}
]