lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
 <CH0PR18MB4339EC12A4676BEE41039F74CDE4A@CH0PR18MB4339.namprd18.prod.outlook.com>
Date: Fri, 3 Oct 2025 10:40:30 +0000
From: Geethasowjanya Akula <gakula@...vell.com>
To: Jakub Sitnicki <jakub@...udflare.com>,
        Sunil Kovvuri Goutham
	<sgoutham@...vell.com>,
        Subbaraya Sundeep Bhatta <sbhatta@...vell.com>,
        Hariprasad Kelam <hkelam@...vell.com>,
        Bharat Bhushan <bbhushan2@...vell.com>
CC: "netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: RE: [EXTERNAL] marvell/octeontx2: XDP vs skb headroom reservation

Hi,

>-----Original Message-----
>From: Jakub Sitnicki <jakub@...udflare.com>
>Sent: Thursday, October 2, 2025 5:16 PM
>To: Sunil Kovvuri Goutham <sgoutham@...vell.com>; Geethasowjanya Akula
><gakula@...vell.com>; Subbaraya Sundeep Bhatta <sbhatta@...vell.com>;
>Hariprasad Kelam <hkelam@...vell.com>; Bharat Bhushan
><bbhushan2@...vell.com>
>Cc: netdev@...r.kernel.org
>Subject: [EXTERNAL] marvell/octeontx2: XDP vs skb headroom reservation
>
>Hi,
>
>I'm auditing calls to skb_metadata_set() in drivers and something seems off in
>oceontx2. I may be completely misreading the code. I'm a total stranger to that
>driver.
>
>It would seem that there is a difference between the amount of headroom that
>the driver reserves for the XDP buffer vs the skb that is built from on that
>buffer, while the two should match.
>
>In the receive handler we have:
>
>otx2_rcv_pkt_handler
>  otx2_xdp_rcv_pkt_handler if pfvf->xdp_prog
>    xdp_prepare_buff(..., OTX2_HEAD_ROOM, ...)
>      where OTX2_HEAD_ROOM = OTX2_ALIGN = 128
>  skb = napi_get_frags
>    napi_alloc_skb
>      skb_reserve(NET_SKB_PAD + NET_IP_ALIGN)
>        where NET_SKB_PAD = 64, NET_IP_ALIGN = 0 on x86
>  napi_gro_frags
>
>There are no other calls to skb_reserve there, so we seem to have a mismatch.
>128B of headroom in XDP buff, and only 64B of headroom in skb head.
>
>Again, I could be totally wrong about this, I'm not familiar with the driver, but I
>thought you might want to double check this.
>

The otx2 netdev driver calculates the receive buffer size to accommodate the full network
packet as follows:
hw.buf_len = mtu + OTX2_ETH_HLEN + OTX2_HW_TIMESTAMP_LEN;
In addition, it reserves OTX2_HEAD_ROOM (128 bytes). The hardware actually copies
the packet starting at (u64*)bufptr + OTX2_HEAD_ROOM. This means the SKB has 
128 bytes of headroom available, which is especially useful in the XDP case for adding any extra headers.

static int otx2_get_rbuf_size(struct otx2_nic *pf, int mtu)
{
        int frame_size;
        int total_size;
        int rbuf_size;

        if (pf->hw.rbuf_len)
                return ALIGN(pf->hw.rbuf_len, OTX2_ALIGN) + OTX2_HEAD_ROOM;
Thanks,
Geetha.
>Thanks,
>-jkbs

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ