netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jacob Keller <jacob.e.keller@intel.com>
To: Simon Horman <horms@kernel.org>, Yue Haibing <yuehaibing@huawei.com>
Cc: <anthony.l.nguyen@intel.com>, <przemyslaw.kitszel@intel.com>,
	<davem@davemloft.net>, <edumazet@google.com>, <kuba@kernel.org>,
	<pabeni@redhat.com>, <ast@kernel.org>, <daniel@iogearbox.net>,
	<hawk@kernel.org>, <john.fastabend@gmail.com>,
	<vedang.patel@intel.com>, <andre.guedes@intel.com>,
	<maciej.fijalkowski@intel.com>, <jithu.joseph@intel.com>,
	<intel-wired-lan@lists.osuosl.org>, <netdev@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <bpf@vger.kernel.org>
Subject: Re: [Intel-wired-lan] [PATCH net] igc: Fix passing 0 to ERR_PTR in igc_xdp_run_prog()
Date: Wed, 16 Oct 2024 16:12:31 -0700	[thread overview]
Message-ID: <f8bcde08-b526-4b2e-8098-88402107c8ee@intel.com> (raw)
In-Reply-To: <8e4ef7f6-1d7d-45dc-b26e-4d9bc37269de@intel.com>



On 10/16/2024 4:06 PM, Jacob Keller wrote:
> 
> 
> On 10/16/2024 11:53 AM, Simon Horman wrote:
>> On Wed, Oct 16, 2024 at 06:53:10PM +0800, Yue Haibing wrote:
>>> Return NULL instead of passing to ERR_PTR while res is IGC_XDP_PASS,
>>> which is zero, this fix smatch warnings:
>>> drivers/net/ethernet/intel/igc/igc_main.c:2533
>>>  igc_xdp_run_prog() warn: passing zero to 'ERR_PTR'
>>>
>>> Fixes: 26575105d6ed ("igc: Add initial XDP support")
>>> Signed-off-by: Yue Haibing <yuehaibing@huawei.com>
>>> ---
>>>  drivers/net/ethernet/intel/igc/igc_main.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
>>> index 6e70bca15db1..c3d6e20c0be0 100644
>>> --- a/drivers/net/ethernet/intel/igc/igc_main.c
>>> +++ b/drivers/net/ethernet/intel/igc/igc_main.c
>>> @@ -2530,7 +2530,7 @@ static struct sk_buff *igc_xdp_run_prog(struct igc_adapter *adapter,
>>>  	res = __igc_xdp_run_prog(adapter, prog, xdp);
>>>  
>>>  out:
>>> -	return ERR_PTR(-res);
>>> +	return res ? ERR_PTR(-res) : NULL;
>>
>> I think this is what PTR_ERR_OR_ZERO() is for.
> 
> Not quite. PTR_ERR_OR_ZERO is intended for the case where you are
> extracting an error from a pointer. This is converting an error into a
> pointer.
> 
> I am not sure what is really expected here. If res is zero, shouldn't we
> be returning an skb pointer and not NULL?
> 
> Why does igc_xdp_run_prog even return a sk_buff pointer at all? It never
> actually returns an skb...
> 
> This feels like the wrong fix entirely.
> 
> __igc_xdp_run_prog returns a custom value for the action, between
> IGC_XDP_PASS, IGC_XDP_TX, IGC_XDP_REDIRECT, or IGC_XDP_CONSUMED.
> 
> This function is called by igc_xdp_run_prog which converts this to a
> negative error code with the sk_buff pointer type.
> 
> All so that we can assign a value to the skb pointer in
> ice_clean_rx_irq, and check it with IS_ERR
> 
> I don't like this fix, I think we could drop the igc_xdp_run_prog
> wrapper, call __igc_xdp_run_prog directly and check its return value
> instead of this method of using an error pointer.

Indeed, this SKB error stuff was added by 26575105d6ed ("igc: Add
initial XDP support") which claims to be aligning with other Intel drivers.

But the other Intel drivers just have a function that returns the xdp
result and checks it directly.

Perhaps this is due to the way that the igc driver shares rings between
XDP and the regular path?

Its not clear to me, but I think this fix is not what I would do.

  reply	other threads:[~2024-10-16 23:12 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-16 10:53 [PATCH net] igc: Fix passing 0 to ERR_PTR in igc_xdp_run_prog() Yue Haibing
2024-10-16 18:53 ` Simon Horman
2024-10-16 23:06   ` [Intel-wired-lan] " Jacob Keller
2024-10-16 23:12     ` Jacob Keller [this message]
2024-10-17  3:51       ` Yue Haibing
2024-10-17  3:55       ` Yue Haibing
2024-10-17 11:03         ` Maciej Fijalkowski
2024-10-17 16:26           ` Jacob Keller
2024-10-18  6:37             ` Kurt Kanzenbach
2024-10-17 14:16     ` Simon Horman
2024-10-17 16:25       ` Jacob Keller

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=f8bcde08-b526-4b2e-8098-88402107c8ee@intel.com \
    --to=jacob.e.keller@intel.com \
    --cc=andre.guedes@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hawk@kernel.org \
    --cc=horms@kernel.org \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=jithu.joseph@intel.com \
    --cc=john.fastabend@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.fijalkowski@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=przemyslaw.kitszel@intel.com \
    --cc=vedang.patel@intel.com \
    --cc=yuehaibing@huawei.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).