]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
rapidio: fix an API misues when rio_add_net() fails
authorHaoxiang Li <haoxiang_li2024@163.com>
Thu, 27 Feb 2025 07:34:09 +0000 (15:34 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Mar 2025 11:47:37 +0000 (12:47 +0100)
commit b2ef51c74b0171fde7eb69b6152d3d2f743ef269 upstream.

rio_add_net() calls device_register() and fails when device_register()
fails.  Thus, put_device() should be used rather than kfree().  Add
"mport->net = NULL;" to avoid a use after free issue.

Link: https://lkml.kernel.org/r/20250227073409.3696854-1-haoxiang_li2024@163.com
Fixes: e8de370188d0 ("rapidio: add mport char device driver")
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Alexandre Bounine <alex.bou9@gmail.com>
Cc: Matt Porter <mporter@kernel.crashing.org>
Cc: Yang Yingliang <yangyingliang@huawei.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/rapidio/devices/rio_mport_cdev.c

index 5ac2dc1e2abd8a37d16ccbb7f8c7780909f2b4d1..f9dfe7b12ec799a0dd339f7cdbd8795f35a4396e 100644 (file)
@@ -1739,7 +1739,8 @@ static int rio_mport_add_riodev(struct mport_cdev_priv *priv,
                err = rio_add_net(net);
                if (err) {
                        rmcd_debug(RDEV, "failed to register net, err=%d", err);
-                       kfree(net);
+                       put_device(&net->dev);
+                       mport->net = NULL;
                        goto cleanup;
                }
        }