public inbox for oe-kbuild@lists.linux.dev
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [linux-next:master 9740/12133] drivers/soc/qcom/wcnss_ctrl.c:269 wcnss_download_nv() warn: 'fw' from request_firmware() not released on lines: 225.
Date: Tue, 07 Apr 2026 12:02:04 +0800	[thread overview]
Message-ID: <202604060902.awXdPsBh-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Rosen Penev <rosenp@gmail.com>
CC: Bjorn Andersson <andersson@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   2febe6e6ee6e34c7754eff3c4d81aa7b0dcb7979
commit: 908061f0ad30aa08ce211c6a8f95d29102e570bd [9740/12133] soc: qcom: wcnss: simplify allocation of req
:::::: branch date: 2 days ago
:::::: commit date: 6 days ago
config: sparc64-randconfig-r072-20260406 (https://download.01.org/0day-ci/archive/20260406/202604060902.awXdPsBh-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.5.0
smatch: v0.5.0-9004-gb810ac53

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202604060902.awXdPsBh-lkp@intel.com/

smatch warnings:
drivers/soc/qcom/wcnss_ctrl.c:269 wcnss_download_nv() warn: 'fw' from request_firmware() not released on lines: 225.

vim +/fw +269 drivers/soc/qcom/wcnss_ctrl.c

ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  192  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  193  /**
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  194   * wcnss_download_nv() - send nv binary to WCNSS
6be2b3d0848d1e Bjorn Andersson     2016-06-06  195   * @wcnss:	wcnss_ctrl state handle
6be2b3d0848d1e Bjorn Andersson     2016-06-06  196   * @expect_cbc:	indicator to caller that an cbc event is expected
6be2b3d0848d1e Bjorn Andersson     2016-06-06  197   *
6be2b3d0848d1e Bjorn Andersson     2016-06-06  198   * Returns 0 on success. Negative errno on failure.
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  199   */
6be2b3d0848d1e Bjorn Andersson     2016-06-06  200  static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  201  {
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  202  	const struct firmware *fw;
ac3f2784200d49 Bjorn Andersson     2021-03-11  203  	struct device *dev = wcnss->dev;
908061f0ad30aa Rosen Penev         2026-03-26  204  	struct wcnss_download_nv_req *req;
82ec0c290d1a73 Bjorn Andersson     2021-03-11  205  	const char *nvbin = NVBIN_FILE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  206  	const void *data;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  207  	ssize_t left;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  208  	int ret;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  209  
82ec0c290d1a73 Bjorn Andersson     2021-03-11  210  	ret = of_property_read_string(dev->of_node, "firmware-name", &nvbin);
82ec0c290d1a73 Bjorn Andersson     2021-03-11  211  	if (ret < 0 && ret != -EINVAL)
b066a2c430f3f8 Krzysztof Kozlowski 2024-07-03  212  		return ret;
82ec0c290d1a73 Bjorn Andersson     2021-03-11  213  
82ec0c290d1a73 Bjorn Andersson     2021-03-11  214  	ret = request_firmware(&fw, nvbin, dev);
6be2b3d0848d1e Bjorn Andersson     2016-06-06  215  	if (ret < 0) {
82ec0c290d1a73 Bjorn Andersson     2021-03-11  216  		dev_err(dev, "Failed to load nv file %s: %d\n", nvbin, ret);
b066a2c430f3f8 Krzysztof Kozlowski 2024-07-03  217  		return ret;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  218  	}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  219  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  220  	data = fw->data;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  221  	left = fw->size;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  222  
908061f0ad30aa Rosen Penev         2026-03-26  223  	req = kzalloc_flex(*req, fragment, NV_FRAGMENT_SIZE);
908061f0ad30aa Rosen Penev         2026-03-26  224  	if (!req)
908061f0ad30aa Rosen Penev         2026-03-26  225  		return -ENOMEM;
908061f0ad30aa Rosen Penev         2026-03-26  226  
908061f0ad30aa Rosen Penev         2026-03-26  227  	req->frag_size = NV_FRAGMENT_SIZE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  228  	req->hdr.type = WCNSS_DOWNLOAD_NV_REQ;
908061f0ad30aa Rosen Penev         2026-03-26  229  	req->hdr.len = struct_size(req, fragment, NV_FRAGMENT_SIZE);
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  230  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  231  	req->last = 0;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  232  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  233  	req->seq = 0;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  234  	do {
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  235  		if (left <= NV_FRAGMENT_SIZE) {
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  236  			req->last = 1;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  237  			req->frag_size = left;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  238  			req->hdr.len = sizeof(*req) + left;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  239  		}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  240  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  241  		memcpy(req->fragment, data, req->frag_size);
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  242  
5052de8deff561 Bjorn Andersson     2017-03-27  243  		ret = rpmsg_send(wcnss->channel, req, req->hdr.len);
6be2b3d0848d1e Bjorn Andersson     2016-06-06  244  		if (ret < 0) {
ac3f2784200d49 Bjorn Andersson     2021-03-11  245  			dev_err(dev, "failed to send smd packet\n");
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  246  			goto release_fw;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  247  		}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  248  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  249  		/* Increment for next fragment */
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  250  		req->seq++;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  251  
90c29ed7627b6b Bjorn Andersson     2018-02-27  252  		data += NV_FRAGMENT_SIZE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  253  		left -= NV_FRAGMENT_SIZE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  254  	} while (left > 0);
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  255  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  256  	ret = wait_for_completion_timeout(&wcnss->ack, WCNSS_REQUEST_TIMEOUT);
6be2b3d0848d1e Bjorn Andersson     2016-06-06  257  	if (!ret) {
ac3f2784200d49 Bjorn Andersson     2021-03-11  258  		dev_err(dev, "timeout waiting for nv upload ack\n");
6be2b3d0848d1e Bjorn Andersson     2016-06-06  259  		ret = -ETIMEDOUT;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  260  	} else {
6be2b3d0848d1e Bjorn Andersson     2016-06-06  261  		*expect_cbc = wcnss->ack_status == WCNSS_ACK_COLD_BOOTING;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  262  		ret = 0;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  263  	}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  264  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  265  release_fw:
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  266  	release_firmware(fw);
908061f0ad30aa Rosen Penev         2026-03-26  267  	kfree(req);
6be2b3d0848d1e Bjorn Andersson     2016-06-06  268  
6be2b3d0848d1e Bjorn Andersson     2016-06-06 @269  	return ret;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  270  }
6be2b3d0848d1e Bjorn Andersson     2016-06-06  271  

:::::: The code at line 269 was first introduced by commit
:::::: 6be2b3d0848d1ed3e78e416cc4ae9007e85c7533 soc: qcom: wcnss_ctrl: Make wcnss_ctrl parent the other components

:::::: TO: Bjorn Andersson <bjorn.andersson@linaro.org>
:::::: CC: Andy Gross <andy.gross@linaro.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <error27@gmail.com>
To: oe-kbuild@lists.linux.dev, Rosen Penev <rosenp@gmail.com>
Cc: lkp@intel.com, oe-kbuild-all@lists.linux.dev,
	Bjorn Andersson <andersson@kernel.org>
Subject: [linux-next:master 9740/12133] drivers/soc/qcom/wcnss_ctrl.c:269 wcnss_download_nv() warn: 'fw' from request_firmware() not released on lines: 225.
Date: Tue, 7 Apr 2026 12:00:10 +0300	[thread overview]
Message-ID: <202604060902.awXdPsBh-lkp@intel.com> (raw)
Message-ID: <20260407090010.bzGxBjKoDap9uYUYZ5OvFwR-gbS7-ReDZqPgh2z7IRQ@z> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   2febe6e6ee6e34c7754eff3c4d81aa7b0dcb7979
commit: 908061f0ad30aa08ce211c6a8f95d29102e570bd [9740/12133] soc: qcom: wcnss: simplify allocation of req
config: sparc64-randconfig-r072-20260406 (https://download.01.org/0day-ci/archive/20260406/202604060902.awXdPsBh-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.5.0
smatch: v0.5.0-9004-gb810ac53

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202604060902.awXdPsBh-lkp@intel.com/

smatch warnings:
drivers/soc/qcom/wcnss_ctrl.c:269 wcnss_download_nv() warn: 'fw' from request_firmware() not released on lines: 225.

vim +/fw +269 drivers/soc/qcom/wcnss_ctrl.c

6be2b3d0848d1e Bjorn Andersson     2016-06-06  200  static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  201  {
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  202  	const struct firmware *fw;
ac3f2784200d49 Bjorn Andersson     2021-03-11  203  	struct device *dev = wcnss->dev;
908061f0ad30aa Rosen Penev         2026-03-26  204  	struct wcnss_download_nv_req *req;
82ec0c290d1a73 Bjorn Andersson     2021-03-11  205  	const char *nvbin = NVBIN_FILE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  206  	const void *data;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  207  	ssize_t left;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  208  	int ret;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  209  
82ec0c290d1a73 Bjorn Andersson     2021-03-11  210  	ret = of_property_read_string(dev->of_node, "firmware-name", &nvbin);
82ec0c290d1a73 Bjorn Andersson     2021-03-11  211  	if (ret < 0 && ret != -EINVAL)
b066a2c430f3f8 Krzysztof Kozlowski 2024-07-03  212  		return ret;
82ec0c290d1a73 Bjorn Andersson     2021-03-11  213  
82ec0c290d1a73 Bjorn Andersson     2021-03-11  214  	ret = request_firmware(&fw, nvbin, dev);
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

6be2b3d0848d1e Bjorn Andersson     2016-06-06  215  	if (ret < 0) {
82ec0c290d1a73 Bjorn Andersson     2021-03-11  216  		dev_err(dev, "Failed to load nv file %s: %d\n", nvbin, ret);
b066a2c430f3f8 Krzysztof Kozlowski 2024-07-03  217  		return ret;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  218  	}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  219  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  220  	data = fw->data;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  221  	left = fw->size;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  222  
908061f0ad30aa Rosen Penev         2026-03-26  223  	req = kzalloc_flex(*req, fragment, NV_FRAGMENT_SIZE);
908061f0ad30aa Rosen Penev         2026-03-26  224  	if (!req)
908061f0ad30aa Rosen Penev         2026-03-26  225  		return -ENOMEM;

Need to release_firmware() before returning.

908061f0ad30aa Rosen Penev         2026-03-26  226  
908061f0ad30aa Rosen Penev         2026-03-26  227  	req->frag_size = NV_FRAGMENT_SIZE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  228  	req->hdr.type = WCNSS_DOWNLOAD_NV_REQ;
908061f0ad30aa Rosen Penev         2026-03-26  229  	req->hdr.len = struct_size(req, fragment, NV_FRAGMENT_SIZE);
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  230  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  231  	req->last = 0;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  232  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  233  	req->seq = 0;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  234  	do {
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  235  		if (left <= NV_FRAGMENT_SIZE) {
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  236  			req->last = 1;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  237  			req->frag_size = left;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  238  			req->hdr.len = sizeof(*req) + left;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  239  		}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  240  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  241  		memcpy(req->fragment, data, req->frag_size);
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  242  
5052de8deff561 Bjorn Andersson     2017-03-27  243  		ret = rpmsg_send(wcnss->channel, req, req->hdr.len);
6be2b3d0848d1e Bjorn Andersson     2016-06-06  244  		if (ret < 0) {
ac3f2784200d49 Bjorn Andersson     2021-03-11  245  			dev_err(dev, "failed to send smd packet\n");
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  246  			goto release_fw;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  247  		}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  248  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  249  		/* Increment for next fragment */
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  250  		req->seq++;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  251  
90c29ed7627b6b Bjorn Andersson     2018-02-27  252  		data += NV_FRAGMENT_SIZE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  253  		left -= NV_FRAGMENT_SIZE;
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  254  	} while (left > 0);
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  255  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  256  	ret = wait_for_completion_timeout(&wcnss->ack, WCNSS_REQUEST_TIMEOUT);
6be2b3d0848d1e Bjorn Andersson     2016-06-06  257  	if (!ret) {
ac3f2784200d49 Bjorn Andersson     2021-03-11  258  		dev_err(dev, "timeout waiting for nv upload ack\n");
6be2b3d0848d1e Bjorn Andersson     2016-06-06  259  		ret = -ETIMEDOUT;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  260  	} else {
6be2b3d0848d1e Bjorn Andersson     2016-06-06  261  		*expect_cbc = wcnss->ack_status == WCNSS_ACK_COLD_BOOTING;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  262  		ret = 0;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  263  	}
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  264  
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  265  release_fw:
ea7a1f275cf0b5 Bjorn Andersson     2015-09-21  266  	release_firmware(fw);
908061f0ad30aa Rosen Penev         2026-03-26  267  	kfree(req);
6be2b3d0848d1e Bjorn Andersson     2016-06-06  268  
6be2b3d0848d1e Bjorn Andersson     2016-06-06 @269  	return ret;
6be2b3d0848d1e Bjorn Andersson     2016-06-06  270  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


             reply	other threads:[~2026-04-07  4:02 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-07  4:02 kernel test robot [this message]
2026-04-07  9:00 ` [linux-next:master 9740/12133] drivers/soc/qcom/wcnss_ctrl.c:269 wcnss_download_nv() warn: 'fw' from request_firmware() not released on lines: 225 Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202604060902.awXdPsBh-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox