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
next 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