From: Greg KH <gregkh@linuxfoundation.org>
To: Johnny Hao <johnny_haocn@sina.com>
Cc: stable@vger.kernel.org, linux-kernel@vger.kernel.org,
Alexey Nepomnyashih <sdl@nppct.ru>,
Jakub Kicinski <kuba@kernel.org>
Subject: Re: [PATCH 5.15.y] xen-netfront: handle NULL returned by xdp_convert_buff_to_frame()
Date: Thu, 23 Apr 2026 13:37:08 +0200 [thread overview]
Message-ID: <2026042315-moonshine-enticing-be37@gregkh> (raw)
In-Reply-To: <20260327055950.2618928-1-johnny_haocn@sina.com>
On Fri, Mar 27, 2026 at 01:59:50PM +0800, Johnny Hao wrote:
> From: Alexey Nepomnyashih <sdl@nppct.ru>
>
> [ Upstream commit cc3628dcd851ddd8d418bf0c897024b4621ddc92 ]
>
> The function xdp_convert_buff_to_frame() may return NULL if it fails
> to correctly convert the XDP buffer into an XDP frame due to memory
> constraints, internal errors, or invalid data. Failing to check for NULL
> may lead to a NULL pointer dereference if the result is used later in
> processing, potentially causing crashes, data corruption, or undefined
> behavior.
>
> On XDP redirect failure, the associated page must be released explicitly
> if it was previously retained via get_page(). Failing to do so may result
> in a memory leak, as the pages reference count is not decremented.
>
> Cc: stable@vger.kernel.org # v5.9+
> Fixes: 6c5aa6fc4def ("xen networking: add basic XDP support for xen-netfront")
> Signed-off-by: Alexey Nepomnyashih <sdl@nppct.ru>
> Link: https://patch.msgid.link/20250417122118.1009824-1-sdl@nppct.ru
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> Signed-off-by: Johnny Hao <johnny_haocn@sina.com>
> ---
> drivers/net/xen-netfront.c | 17 ++++++++++++-----
> 1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
> index 4b19d54fa2e2..310bc1f7d404 100644
> --- a/drivers/net/xen-netfront.c
> +++ b/drivers/net/xen-netfront.c
> @@ -982,20 +982,27 @@ static u32 xennet_run_xdp(struct netfront_queue *queue, struct page *pdata,
> act = bpf_prog_run_xdp(prog, xdp);
> switch (act) {
> case XDP_TX:
> - get_page(pdata);
> xdpf = xdp_convert_buff_to_frame(xdp);
> + if (unlikely(!xdpf)) {
> + trace_xdp_exception(queue->info->netdev, prog, act);
> + break;
> + }
> + get_page(pdata);
> err = xennet_xdp_xmit(queue->info->netdev, 1, &xdpf, 0);
> - if (unlikely(!err))
> + if (unlikely(err <= 0)) {
> + if (err < 0)
> + trace_xdp_exception(queue->info->netdev, prog, act);
> xdp_return_frame_rx_napi(xdpf);
> - else if (unlikely(err < 0))
> - trace_xdp_exception(queue->info->netdev, prog, act);
> + }
> break;
> case XDP_REDIRECT:
> get_page(pdata);
> err = xdp_do_redirect(queue->info->netdev, xdp, prog);
> *need_xdp_flush = true;
> - if (unlikely(err))
> + if (unlikely(err)) {
> trace_xdp_exception(queue->info->netdev, prog, act);
> + xdp_return_buff(xdp);
> + }
> break;
> case XDP_PASS:
> case XDP_DROP:
> --
> 2.34.1
>
Breaks the build:
ERROR: modpost: "xdp_return_buff" [drivers/net/xen-netfront.ko] undefined!
prev parent reply other threads:[~2026-04-23 11:37 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-27 5:59 [PATCH 5.15.y] xen-netfront: handle NULL returned by xdp_convert_buff_to_frame() Johnny Hao
2026-04-23 11:37 ` Greg KH [this message]
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=2026042315-moonshine-enticing-be37@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=johnny_haocn@sina.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sdl@nppct.ru \
--cc=stable@vger.kernel.org \
/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