From: Dan Carpenter <dan.carpenter@linaro.org>
To: Qi Zhang <qi.z.zhang@intel.com>
Cc: intel-wired-lan@lists.osuosl.org
Subject: [Intel-wired-lan] [bug report] ice: Enable FDIR Configure for AVF
Date: Mon, 1 Sep 2025 12:09:27 +0300 [thread overview]
Message-ID: <aLVix68cQNQr4CC8@stanley.mountain> (raw)
Hello Qi Zhang,
Commit 1f7ea1cd6a37 ("ice: Enable FDIR Configure for AVF") from Mar
9, 2021 (linux-next), leads to the following Smatch static checker
warning:
drivers/net/ethernet/intel/ice/virt/fdir.c:2339 ice_vc_del_fdir_fltr()
warn: missing error code here? 'kzalloc_noprof()' failed
drivers/net/ethernet/intel/ice/virt/fdir.c
2311 int ice_vc_del_fdir_fltr(struct ice_vf *vf, u8 *msg)
2312 {
2313 struct virtchnl_fdir_del *fltr = (struct virtchnl_fdir_del *)msg;
2314 struct virtchnl_fdir_del *stat = NULL;
2315 struct virtchnl_fdir_fltr_conf *conf;
2316 struct ice_vf_fdir *fdir = &vf->fdir;
2317 enum virtchnl_status_code v_ret;
2318 struct ice_fdir_fltr *input;
2319 enum ice_fltr_ptype flow;
2320 struct device *dev;
2321 struct ice_pf *pf;
2322 int is_tun = 0;
2323 int len = 0;
2324 int ret;
2325
2326 pf = vf->pf;
2327 dev = ice_pf_to_dev(pf);
2328 ret = ice_vc_fdir_param_check(vf, fltr->vsi_id);
2329 if (ret) {
2330 v_ret = VIRTCHNL_STATUS_ERR_PARAM;
2331 dev_dbg(dev, "Parameter check for VF %d failed\n", vf->vf_id);
2332 goto err_exit;
2333 }
2334
2335 stat = kzalloc(sizeof(*stat), GFP_KERNEL);
2336 if (!stat) {
2337 v_ret = VIRTCHNL_STATUS_ERR_NO_MEMORY;
It's not clear if this is deliberate or not. Maybe we could add a comment?
Here set v_ret.
2338 dev_dbg(dev, "Alloc stat for VF %d failed\n", vf->vf_id);
--> 2339 goto err_exit;
2340 }
2341
2342 len = sizeof(*stat);
2343
2344 conf = ice_vc_fdir_lookup_entry(vf, fltr->flow_id);
2345 if (!conf) {
2346 v_ret = VIRTCHNL_STATUS_SUCCESS;
2347 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NONEXIST;
2348 dev_dbg(dev, "VF %d: FDIR invalid flow_id:0x%X\n",
2349 vf->vf_id, fltr->flow_id);
2350 goto err_exit;
2351 }
2352
2353 /* Just return failure when ctrl_vsi idx is invalid */
2354 if (vf->ctrl_vsi_idx == ICE_NO_VSI) {
2355 v_ret = VIRTCHNL_STATUS_SUCCESS;
2356 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
2357 dev_err(dev, "Invalid FDIR ctrl_vsi for VF %d\n", vf->vf_id);
2358 goto err_exit;
2359 }
2360
2361 ret = ice_vc_fdir_set_irq_ctx(vf, conf, VIRTCHNL_OP_DEL_FDIR_FILTER);
2362 if (ret) {
2363 v_ret = VIRTCHNL_STATUS_SUCCESS;
2364 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
2365 dev_dbg(dev, "VF %d: set FDIR context failed\n", vf->vf_id);
2366 goto err_exit;
2367 }
2368
2369 /* For raw FDIR filters created by the parser */
2370 if (conf->parser_ena) {
2371 ret = ice_vc_del_fdir_raw(vf, conf, &v_ret, stat, len);
2372 if (ret)
2373 goto err_del_tmr;
2374 goto exit;
2375 }
2376
2377 is_tun = ice_fdir_is_tunnel(conf->ttype);
2378 ret = ice_vc_fdir_write_fltr(vf, conf, false, is_tun);
2379 if (ret) {
2380 v_ret = VIRTCHNL_STATUS_SUCCESS;
2381 stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
2382 dev_err(dev, "VF %d: writing FDIR rule failed, ret:%d\n",
2383 vf->vf_id, ret);
2384 goto err_del_tmr;
2385 }
2386
2387 /* Remove unused profiles to avoid unexpected behaviors */
2388 input = &conf->input;
2389 flow = input->flow_type;
2390 if (fdir->fdir_fltr_cnt[flow][is_tun] == 1)
2391 ice_vc_fdir_rem_prof(vf, flow, is_tun);
2392
2393 exit:
2394 kfree(stat);
2395
2396 return ret;
2397
2398 err_del_tmr:
2399 ice_vc_fdir_clear_irq_ctx(vf);
2400 err_exit:
2401 ret = ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_DEL_FDIR_FILTER, v_ret,
2402 (u8 *)stat, len);
But then "ret" is generally going to be success.
2403 kfree(stat);
2404 return ret;
2405 }
regards,
dan carpenter
next reply other threads:[~2025-09-01 9:09 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-01 9:09 Dan Carpenter [this message]
2025-09-01 11:15 ` [Intel-wired-lan] [bug report] ice: Enable FDIR Configure for AVF Przemek Kitszel
2025-09-01 11:52 ` 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=aLVix68cQNQr4CC8@stanley.mountain \
--to=dan.carpenter@linaro.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=qi.z.zhang@intel.com \
/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;
as well as URLs for NNTP newsgroup(s).