intel-wired-lan.osuosl.org archive mirror
 help / color / mirror / Atom feed
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

             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).