]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thunderbolt: Release request if tb_cfg_request() fails in __tb_xdomain_response()
authorMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 19 Nov 2025 11:15:58 +0000 (13:15 +0200)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 5 May 2026 11:53:46 +0000 (13:53 +0200)
If tb_cfg_request() fails setting up the request (for example the
control channel is shut down already) it returns an error without
calling the callback. To avoid leaking that memory, call
tb_cfg_request_put() if tb_cfg_request() fails.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/xdomain.c

index 680b2204875ad92b3a932bce0d3603b10adfc2a9..4fe19cf6387dac6570b96f08bac1df600910045d 100644 (file)
@@ -136,6 +136,7 @@ static int __tb_xdomain_response(struct tb_ctl *ctl, const void *response,
                                 size_t size, enum tb_cfg_pkg_type type)
 {
        struct tb_cfg_request *req;
+       int ret;
 
        req = tb_cfg_request_alloc();
        if (!req)
@@ -147,7 +148,11 @@ static int __tb_xdomain_response(struct tb_ctl *ctl, const void *response,
        req->request_size = size;
        req->request_type = type;
 
-       return tb_cfg_request(ctl, req, response_ready, req);
+       ret = tb_cfg_request(ctl, req, response_ready, req);
+       if (ret)
+               tb_cfg_request_put(req);
+
+       return ret;
 }
 
 /**