[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CANn89iKRYHaYS_wC0CzxsFD6pCHv126xKDbVgozBKvZyK-j7Yw@mail.gmail.com>
Date: Wed, 26 Nov 2025 01:03:50 -0800
From: Eric Dumazet <edumazet@...gle.com>
To: ssrane_b23@...vjti.ac.in
Cc: Oliver Hartkopp <socketcan@...tkopp.net>, Marc Kleine-Budde <mkl@...gutronix.de>,
Jamal Hadi Salim <jhs@...atatu.com>, Cong Wang <xiyou.wangcong@...il.com>,
Jiri Pirko <jiri@...nulli.us>, "David S . Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>, Simon Horman <horms@...nel.org>,
Rostislav Lisovy <lisovy@...il.com>, linux-can@...r.kernel.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, skhan@...uxfoundation.org,
linux-kernel-mentees@...ts.linux.dev, david.hunter.linux@...il.com,
khalid@...nel.org, syzbot+5d8269a1e099279152bc@...kaller.appspotmail.com
Subject: Re: [PATCH v3] net/sched: em_canid: fix uninit-value in em_canid_match
On Wed, Nov 26, 2025 at 12:57 AM <ssrane_b23@...vjti.ac.in> wrote:
>
> From: Shaurya Rane <ssrane_b23@...vjti.ac.in>
>
> Use pskb_may_pull() to ensure a complete CAN frame is present in the
> linear data buffer before reading the CAN ID. A simple skb->len check
> is insufficient because it only verifies the total data length but does
> not guarantee the data is present in skb->data (it could be in
> fragments).
>
> pskb_may_pull() both validates the length and pulls fragmented data
> into the linear buffer if necessary, making it safe to directly
> access skb->data.
>
> Reported-by: syzbot+5d8269a1e099279152bc@...kaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=5d8269a1e099279152bc
> Fixes: f057bbb6f9ed ("net: em_canid: Ematch rule to match CAN frames according to their identifiers")
> Signed-off-by: Shaurya Rane <ssrane_b23@...vjti.ac.in>
> ---
> v3: Use CAN_MTU to validate a complete CAN frame is present
> v2: Use pskb_may_pull() instead of skb->len check to properly
> handle fragmented skbs
> ---
> net/sched/em_canid.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/net/sched/em_canid.c b/net/sched/em_canid.c
> index 5337bc462755..2d27f91d8441 100644
> --- a/net/sched/em_canid.c
> +++ b/net/sched/em_canid.c
> @@ -99,6 +99,9 @@ static int em_canid_match(struct sk_buff *skb, struct tcf_ematch *m,
> int i;
> const struct can_filter *lp;
>
> + if (!pskb_may_pull(skb, CAN_MTU))
> + return 0;
> +
> can_id = em_canid_get_id(skb);
>
> if (can_id & CAN_EFF_FLAG) {
For your next netdev patches, please read
Documentation/process/maintainer-netdev.rst
Resending after review
~~~~~~~~~~~~~~~~~~~~~~
Allow at least 24 hours to pass between postings. This will ensure reviewers
from all geographical locations have a chance to chime in. Do not wait
too long (weeks) between postings either as it will make it harder for reviewers
to recall all the context.
Thank you.
Powered by blists - more mailing lists