]> git.ipfire.org Git - thirdparty/linux.git/commit
rocker: fix memory leak in rocker_world_port_post_fini()
authorKery Qi <qikeyu2017@gmail.com>
Fri, 23 Jan 2026 21:10:31 +0000 (05:10 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 27 Jan 2026 03:28:34 +0000 (19:28 -0800)
commit8d7ba71e46216b8657a82ca2ec118bc93812a4d0
treef68a387eaaa5eccc4a7ac3230b150846886e29a0
parent709bbb015538dfd5c97308b77c950d41a4d95cd3
rocker: fix memory leak in rocker_world_port_post_fini()

In rocker_world_port_pre_init(), rocker_port->wpriv is allocated with
kzalloc(wops->port_priv_size, GFP_KERNEL). However, in
rocker_world_port_post_fini(), the memory is only freed when
wops->port_post_fini callback is set:

    if (!wops->port_post_fini)
        return;
    wops->port_post_fini(rocker_port);
    kfree(rocker_port->wpriv);

Since rocker_ofdpa_ops does not implement port_post_fini callback
(it is NULL), the wpriv memory allocated for each port is never freed
when ports are removed. This leads to a memory leak of
sizeof(struct ofdpa_port) bytes per port on every device removal.

Fix this by always calling kfree(rocker_port->wpriv) regardless of
whether the port_post_fini callback exists.

Fixes: e420114eef4a ("rocker: introduce worlds infrastructure")
Signed-off-by: Kery Qi <qikeyu2017@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260123211030.2109-2-qikeyu2017@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/rocker/rocker_main.c