CVE-2021-47482

net: batman-adv: fix error handling

State
Published
Severity
5.3 Medium
Published
May 22, 2024
Updated
May 11, 2026
Reserved
May 22, 2024

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

net: batman-adv: fix error handling

Syzbot reported ODEBUG warning in batadv_nc_mesh_free(). The problem was in wrong error handling in batadv_mesh_init().

Before this patch batadv_mesh_init() was calling batadv_mesh_free() 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 bat_priv->nc.work, syzbot was able to hit GPF in batadv_nc_purge_paths(), 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 batadv_mesh_free() with proper order to avoid touching uninitialized fields.

Scores

CVSSScoreVectorSource
3.15.3 MediumCVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:HCISA-ADP

Weaknesses

  • CWE-544 Missing Standardized Error Handling Mechanism

Affected Products

ProductVersions
LinuxLinux
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before 0c6b199f09be489c48622537a550787fc80aea73Affected
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before 07533f1a673ce1126d0a72ef1e4b5eaaa3dd6d20Affected
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before e50f957652190b5a88a8ebce7e5ab14ebd0d3f00Affected
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before fbf150b16a3635634b7dfb7f229d8fcd643c6c51Affected
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before 6422e8471890273994fe8cc6d452b0dcd2c9483eAffected
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before b0a2cd38553c77928ef1646ed1518486b1e70ae8Affected
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before a8f7359259dd5923adc6129284fdad12fc5db347Affected
  • c6c8fea29769d998d94fcec9b9f14d4b52b349d3 to before 6f68cd634856f8ca93bafd623ba5357e0f648c68Affected
LinuxLinux
  • 2.6.38Affected
  • before 2.6.38Not affected
  • 4.4.293 through 4.4.*Not affected
  • 4.9.289 through 4.9.*Not affected
  • 4.14.254 through 4.14.*Not affected
  • 4.19.215 through 4.19.*Not affected
  • 5.4.157 through 5.4.*Not affected
  • 5.10.77 through 5.10.*Not affected
  • 5.14.16 through 5.14.*Not affected
  • 5.15 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.