{"id":"CVE-2026-23164","state":"PUBLISHED","title":"rocker: fix memory leak in rocker_world_port_post_fini()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nrocker: fix memory leak in rocker_world_port_post_fini()\n\nIn rocker_world_port_pre_init(), rocker_port->wpriv is allocated with\nkzalloc(wops->port_priv_size, GFP_KERNEL). However, in\nrocker_world_port_post_fini(), the memory is only freed when\nwops->port_post_fini callback is set:\n\n    if (!wops->port_post_fini)\n        return;\n    wops->port_post_fini(rocker_port);\n    kfree(rocker_port->wpriv);\n\nSince rocker_ofdpa_ops does not implement port_post_fini callback\n(it is NULL), the wpriv memory allocated for each port is never freed\nwhen ports are removed. This leads to a memory leak of\nsizeof(struct ofdpa_port) bytes per port on every device removal.\n\nFix this by always calling kfree(rocker_port->wpriv) regardless of\nwhether the port_post_fini callback exists.","publishedAt":"2026-02-14T16:01:28.624Z","updatedAt":"2026-10-19T18:25:33.850Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"2a3a64d75d2d0727da285749476761ebcad557a3","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"b11e6f926480ab0939fec44781f28558c54be4e7","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"8ce2e85889939c02740b4245301aa5c35fc94887","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"d448bf96889f1905e740c554780f5c9fa0440566","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"d8723917efda3b4f4c3de78d1ec1e1af015c0be1","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"dce375f4afc348c310d171abcde7ec1499a4c26a","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"8d7ba71e46216b8657a82ca2ec118bc93812a4d0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/rocker/rocker_main.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.6","versionType":"semver"},{"version":"5.10.249","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.199","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.162","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.123","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.69","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.9","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/rocker/rocker_main.c"]}],"references":["https://git.kernel.org/stable/c/2a3a64d75d2d0727da285749476761ebcad557a3","https://git.kernel.org/stable/c/b11e6f926480ab0939fec44781f28558c54be4e7","https://git.kernel.org/stable/c/8ce2e85889939c02740b4245301aa5c35fc94887","https://git.kernel.org/stable/c/d448bf96889f1905e740c554780f5c9fa0440566","https://git.kernel.org/stable/c/d8723917efda3b4f4c3de78d1ec1e1af015c0be1","https://git.kernel.org/stable/c/dce375f4afc348c310d171abcde7ec1499a4c26a","https://git.kernel.org/stable/c/8d7ba71e46216b8657a82ca2ec118bc93812a4d0"],"weaknesses":["CWE-401"],"ingestedAt":"2026-10-29T20:11:21.040Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/23xxx/CVE-2026-23164.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-23164","state":"PUBLISHED","datePublished":"2026-02-14T16:01:28.624Z","dateUpdated":"2026-10-19T18:25:33.850Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-01-13T15:37:45.980Z"},"containers":{"cna":{"title":"rocker: fix memory leak in rocker_world_port_post_fini()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nrocker: fix memory leak in rocker_world_port_post_fini()\n\nIn rocker_world_port_pre_init(), rocker_port->wpriv is allocated with\nkzalloc(wops->port_priv_size, GFP_KERNEL). However, in\nrocker_world_port_post_fini(), the memory is only freed when\nwops->port_post_fini callback is set:\n\n    if (!wops->port_post_fini)\n        return;\n    wops->port_post_fini(rocker_port);\n    kfree(rocker_port->wpriv);\n\nSince rocker_ofdpa_ops does not implement port_post_fini callback\n(it is NULL), the wpriv memory allocated for each port is never freed\nwhen ports are removed. This leads to a memory leak of\nsizeof(struct ofdpa_port) bytes per port on every device removal.\n\nFix this by always calling kfree(rocker_port->wpriv) regardless of\nwhether the port_post_fini callback exists."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"2a3a64d75d2d0727da285749476761ebcad557a3","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"b11e6f926480ab0939fec44781f28558c54be4e7","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"8ce2e85889939c02740b4245301aa5c35fc94887","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"d448bf96889f1905e740c554780f5c9fa0440566","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"d8723917efda3b4f4c3de78d1ec1e1af015c0be1","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"dce375f4afc348c310d171abcde7ec1499a4c26a","versionType":"git"},{"version":"e420114eef4a3a5025a243b89b0dc343101e3d3c","status":"affected","lessThan":"8d7ba71e46216b8657a82ca2ec118bc93812a4d0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/rocker/rocker_main.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.6","versionType":"semver"},{"version":"5.10.249","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.199","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.162","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.123","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.69","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.9","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/rocker/rocker_main.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/2a3a64d75d2d0727da285749476761ebcad557a3"},{"url":"https://git.kernel.org/stable/c/b11e6f926480ab0939fec44781f28558c54be4e7"},{"url":"https://git.kernel.org/stable/c/8ce2e85889939c02740b4245301aa5c35fc94887"},{"url":"https://git.kernel.org/stable/c/d448bf96889f1905e740c554780f5c9fa0440566"},{"url":"https://git.kernel.org/stable/c/d8723917efda3b4f4c3de78d1ec1e1af015c0be1"},{"url":"https://git.kernel.org/stable/c/dce375f4afc348c310d171abcde7ec1499a4c26a"},{"url":"https://git.kernel.org/stable/c/8d7ba71e46216b8657a82ca2ec118bc93812a4d0"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-11T22:01:31.474Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"5.10.249"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"5.15.199"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.1.162"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.6.123"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.12.69"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.18.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.6","versionEndExcluding":"6.19"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-23164","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2026-06-10T20:41:35.705081Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-401","lang":"en","type":"CWE","description":"CWE-401 Missing Release of Memory after Effective Lifetime"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-19T18:25:33.850Z"}}]}}}