linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak
@ 2025-11-09  9:13 Ranganath V N
  2025-11-09  9:13 ` [PATCH net v4 1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak Ranganath V N
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Ranganath V N @ 2025-11-09  9:13 UTC (permalink / raw)
  To: edumazet, davem, david.hunter.linux, horms, jhs, jiri, khalid,
	kuba, pabeni, vnranganath.20, xiyou.wangcong
  Cc: linux-kernel, netdev, skhan, syzbot+0c85cae3350b7d486aee

This series addresses the uninitialization of the struct which has
2 bytes of padding. And copying this uninitialized data to userspace
can leak info from kernel memory.

This series ensures all members and padding are cleared prior to
begin copied.

This change silences the KMSAN report and prevents potential information
leaks from the kernel memory.

Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
---
Changes in v4:
- including net in the subject.
- added the Fixes,closes,tested-by and Reported-by tags for patch(1/2)
- Link to v3: https://lore.kernel.org/lkml/20251106195635.2438-1-vnranganath.20@gmail.com/#t

Changes in v3:
- updated the commit messages and subject.
- corrected the code misisng ";" in v2
- Link to v2: https://lore.kernel.org/r/20251101-infoleak-v2-0-01a501d41c09@gmail.com

Changes in v2:
- removed memset(&t, 0, sizeof(t)) from previous patch.
- added the new patch series to address the issue.
- Link to v1: https://lore.kernel.org/r/20251031-infoleak-v1-1-9f7250ee33aa@gmail.com

Ranganath V N (2):
  net: sched: act_connmark: initialize struct tc_ife to fix kernel leak
  net: sched: act_ife: initialize struct tc_ife to fix KMSAN
    kernel-infoleak

 net/sched/act_connmark.c | 12 +++++++-----
 net/sched/act_ife.c      | 12 +++++++-----
 2 files changed, 14 insertions(+), 10 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH net v4 1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak
  2025-11-09  9:13 [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Ranganath V N
@ 2025-11-09  9:13 ` Ranganath V N
  2025-11-09  9:30   ` Eric Dumazet
  2025-11-09  9:13 ` [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak Ranganath V N
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Ranganath V N @ 2025-11-09  9:13 UTC (permalink / raw)
  To: edumazet, davem, david.hunter.linux, horms, jhs, jiri, khalid,
	kuba, pabeni, vnranganath.20, xiyou.wangcong
  Cc: linux-kernel, netdev, skhan, syzbot+0c85cae3350b7d486aee

In tcf_connmark_dump(), the variable 'opt' was partially initialized using a
designatied initializer. While the padding bytes are reamined
uninitialized. nla_put() copies the entire structure into a
netlink message, these uninitialized bytes leaked to userspace.

Initialize the structure with memset before assigning its fields
to ensure all members and padding are cleared prior to beign copied.

Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
Fixes: 22a5dc0e5e3e ("net: sched: Introduce connmark action")
Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
---
 net/sched/act_connmark.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/net/sched/act_connmark.c b/net/sched/act_connmark.c
index 3e89927d7116..26ba8c2d20ab 100644
--- a/net/sched/act_connmark.c
+++ b/net/sched/act_connmark.c
@@ -195,13 +195,15 @@ static inline int tcf_connmark_dump(struct sk_buff *skb, struct tc_action *a,
 	const struct tcf_connmark_info *ci = to_connmark(a);
 	unsigned char *b = skb_tail_pointer(skb);
 	const struct tcf_connmark_parms *parms;
-	struct tc_connmark opt = {
-		.index   = ci->tcf_index,
-		.refcnt  = refcount_read(&ci->tcf_refcnt) - ref,
-		.bindcnt = atomic_read(&ci->tcf_bindcnt) - bind,
-	};
+	struct tc_connmark opt;
 	struct tcf_t t;
 
+	memset(&opt, 0, sizeof(opt));
+
+	opt.index   = ci->tcf_index;
+	opt.refcnt  = refcount_read(&ci->tcf_refcnt) - ref;
+	opt.bindcnt = atomic_read(&ci->tcf_bindcnt) - bind;
+
 	rcu_read_lock();
 	parms = rcu_dereference(ci->parms);
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
  2025-11-09  9:13 [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Ranganath V N
  2025-11-09  9:13 ` [PATCH net v4 1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak Ranganath V N
@ 2025-11-09  9:13 ` Ranganath V N
  2025-11-09  9:31   ` Eric Dumazet
  2025-12-12  0:54   ` Vitaly Chikunov
  2025-11-10 20:02 ` [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Cong Wang
  2025-11-11 14:10 ` patchwork-bot+netdevbpf
  3 siblings, 2 replies; 11+ messages in thread
From: Ranganath V N @ 2025-11-09  9:13 UTC (permalink / raw)
  To: edumazet, davem, david.hunter.linux, horms, jhs, jiri, khalid,
	kuba, pabeni, vnranganath.20, xiyou.wangcong
  Cc: linux-kernel, netdev, skhan, syzbot+0c85cae3350b7d486aee

Fix a KMSAN kernel-infoleak detected  by the syzbot .

[net?] KMSAN: kernel-infoleak in __skb_datagram_iter

In tcf_ife_dump(), the variable 'opt' was partially initialized using a
designatied initializer. While the padding bytes are reamined
uninitialized. nla_put() copies the entire structure into a
netlink message, these uninitialized bytes leaked to userspace.

Initialize the structure with memset before assigning its fields
to ensure all members and padding are cleared prior to beign copied.

This change silences the KMSAN report and prevents potential information
leaks from the kernel memory.

This fix has been tested and validated by syzbot. This patch closes the
bug reported at the following syzkaller link and ensures no infoleak.

Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
Fixes: ef6980b6becb ("introduce IFE action")
Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
---
 net/sched/act_ife.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
index 107c6d83dc5c..7c6975632fc2 100644
--- a/net/sched/act_ife.c
+++ b/net/sched/act_ife.c
@@ -644,13 +644,15 @@ static int tcf_ife_dump(struct sk_buff *skb, struct tc_action *a, int bind,
 	unsigned char *b = skb_tail_pointer(skb);
 	struct tcf_ife_info *ife = to_ife(a);
 	struct tcf_ife_params *p;
-	struct tc_ife opt = {
-		.index = ife->tcf_index,
-		.refcnt = refcount_read(&ife->tcf_refcnt) - ref,
-		.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
-	};
+	struct tc_ife opt;
 	struct tcf_t t;
 
+	memset(&opt, 0, sizeof(opt));
+
+	opt.index = ife->tcf_index,
+	opt.refcnt = refcount_read(&ife->tcf_refcnt) - ref,
+	opt.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
+
 	spin_lock_bh(&ife->tcf_lock);
 	opt.action = ife->tcf_action;
 	p = rcu_dereference_protected(ife->params,
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH net v4 1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak
  2025-11-09  9:13 ` [PATCH net v4 1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak Ranganath V N
@ 2025-11-09  9:30   ` Eric Dumazet
  0 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2025-11-09  9:30 UTC (permalink / raw)
  To: Ranganath V N
  Cc: davem, david.hunter.linux, horms, jhs, jiri, khalid, kuba, pabeni,
	xiyou.wangcong, linux-kernel, netdev, skhan,
	syzbot+0c85cae3350b7d486aee

On Sun, Nov 9, 2025 at 1:13 AM Ranganath V N <vnranganath.20@gmail.com> wrote:
>
> In tcf_connmark_dump(), the variable 'opt' was partially initialized using a
> designatied initializer. While the padding bytes are reamined
> uninitialized. nla_put() copies the entire structure into a
> netlink message, these uninitialized bytes leaked to userspace.
>
> Initialize the structure with memset before assigning its fields
> to ensure all members and padding are cleared prior to beign copied.
>
> Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
> Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> Fixes: 22a5dc0e5e3e ("net: sched: Introduce connmark action")
> Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
> ---

Reviewed-by: Eric Dumazet <edumazet@google.com>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
  2025-11-09  9:13 ` [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak Ranganath V N
@ 2025-11-09  9:31   ` Eric Dumazet
  2025-12-12  0:54   ` Vitaly Chikunov
  1 sibling, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2025-11-09  9:31 UTC (permalink / raw)
  To: Ranganath V N
  Cc: davem, david.hunter.linux, horms, jhs, jiri, khalid, kuba, pabeni,
	xiyou.wangcong, linux-kernel, netdev, skhan,
	syzbot+0c85cae3350b7d486aee

On Sun, Nov 9, 2025 at 1:14 AM Ranganath V N <vnranganath.20@gmail.com> wrote:
>
> Fix a KMSAN kernel-infoleak detected  by the syzbot .
>
> [net?] KMSAN: kernel-infoleak in __skb_datagram_iter
>
> In tcf_ife_dump(), the variable 'opt' was partially initialized using a
> designatied initializer. While the padding bytes are reamined
> uninitialized. nla_put() copies the entire structure into a
> netlink message, these uninitialized bytes leaked to userspace.
>
> Initialize the structure with memset before assigning its fields
> to ensure all members and padding are cleared prior to beign copied.
>
> This change silences the KMSAN report and prevents potential information
> leaks from the kernel memory.
>
> This fix has been tested and validated by syzbot. This patch closes the
> bug reported at the following syzkaller link and ensures no infoleak.
>
> Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
> Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> Fixes: ef6980b6becb ("introduce IFE action")
> Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>

Reviewed-by: Eric Dumazet <edumazet@google.com>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak
  2025-11-09  9:13 [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Ranganath V N
  2025-11-09  9:13 ` [PATCH net v4 1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak Ranganath V N
  2025-11-09  9:13 ` [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak Ranganath V N
@ 2025-11-10 20:02 ` Cong Wang
  2025-11-11 14:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 11+ messages in thread
From: Cong Wang @ 2025-11-10 20:02 UTC (permalink / raw)
  To: Ranganath V N
  Cc: edumazet, davem, david.hunter.linux, horms, jhs, jiri, khalid,
	kuba, pabeni, linux-kernel, netdev, skhan,
	syzbot+0c85cae3350b7d486aee

On Sun, Nov 09, 2025 at 02:43:34PM +0530, Ranganath V N wrote:
> This series addresses the uninitialization of the struct which has
> 2 bytes of padding. And copying this uninitialized data to userspace
> can leak info from kernel memory.
> 
> This series ensures all members and padding are cleared prior to
> begin copied.
> 
> This change silences the KMSAN report and prevents potential information
> leaks from the kernel memory.
> 
> Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>

Looks good to me too.

Acked-by: Cong Wang <xiyou.wangcong@gmail.com>

Thanks!

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak
  2025-11-09  9:13 [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Ranganath V N
                   ` (2 preceding siblings ...)
  2025-11-10 20:02 ` [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Cong Wang
@ 2025-11-11 14:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 11+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-11-11 14:10 UTC (permalink / raw)
  To: Ranganath V N
  Cc: edumazet, davem, david.hunter.linux, horms, jhs, jiri, khalid,
	kuba, pabeni, xiyou.wangcong, linux-kernel, netdev, skhan,
	syzbot+0c85cae3350b7d486aee

Hello:

This series was applied to netdev/net.git (main)
by Paolo Abeni <pabeni@redhat.com>:

On Sun,  9 Nov 2025 14:43:34 +0530 you wrote:
> This series addresses the uninitialization of the struct which has
> 2 bytes of padding. And copying this uninitialized data to userspace
> can leak info from kernel memory.
> 
> This series ensures all members and padding are cleared prior to
> begin copied.
> 
> [...]

Here is the summary with links:
  - [net,v4,1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak
    https://git.kernel.org/netdev/net/c/62b656e43eae
  - [net,v4,2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
    https://git.kernel.org/netdev/net/c/ce50039be49e

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
  2025-11-09  9:13 ` [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak Ranganath V N
  2025-11-09  9:31   ` Eric Dumazet
@ 2025-12-12  0:54   ` Vitaly Chikunov
  2025-12-12 16:26     ` Jamal Hadi Salim
  1 sibling, 1 reply; 11+ messages in thread
From: Vitaly Chikunov @ 2025-12-12  0:54 UTC (permalink / raw)
  To: Ranganath V N, linux-rt-devel
  Cc: edumazet, davem, david.hunter.linux, horms, jhs, jiri, khalid,
	kuba, pabeni, xiyou.wangcong, linux-kernel, netdev, skhan

On Sun, Nov 09, 2025 at 02:43:36PM +0530, Ranganath V N wrote:
> Fix a KMSAN kernel-infoleak detected  by the syzbot .
> 
> [net?] KMSAN: kernel-infoleak in __skb_datagram_iter
> 
> In tcf_ife_dump(), the variable 'opt' was partially initialized using a
> designatied initializer. While the padding bytes are reamined
> uninitialized. nla_put() copies the entire structure into a
> netlink message, these uninitialized bytes leaked to userspace.
> 
> Initialize the structure with memset before assigning its fields
> to ensure all members and padding are cleared prior to beign copied.
> 
> This change silences the KMSAN report and prevents potential information
> leaks from the kernel memory.
> 
> This fix has been tested and validated by syzbot. This patch closes the
> bug reported at the following syzkaller link and ensures no infoleak.
> 
> Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
> Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> Fixes: ef6980b6becb ("introduce IFE action")
> Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
> ---
>  net/sched/act_ife.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
> index 107c6d83dc5c..7c6975632fc2 100644
> --- a/net/sched/act_ife.c
> +++ b/net/sched/act_ife.c
> @@ -644,13 +644,15 @@ static int tcf_ife_dump(struct sk_buff *skb, struct tc_action *a, int bind,
>  	unsigned char *b = skb_tail_pointer(skb);
>  	struct tcf_ife_info *ife = to_ife(a);
>  	struct tcf_ife_params *p;
> -	struct tc_ife opt = {
> -		.index = ife->tcf_index,
> -		.refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> -		.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
> -	};
> +	struct tc_ife opt;
>  	struct tcf_t t;
>  
> +	memset(&opt, 0, sizeof(opt));
> +
> +	opt.index = ife->tcf_index,
> +	opt.refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> +	opt.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,

Are you sure this is correct to delimit with commas instead of
semicolons?

This already causes build failures of 5.10.247-rt141 kernel, because
their spin_lock_bh unrolls into do { .. } while (0):

     CC [M]  net/sched/act_ife.o
   In file included from ./include/linux/spinlock.h:329,
                    from ./include/linux/mmzone.h:8,
                    from ./include/linux/gfp.h:6,
                    from ./include/linux/mm.h:10,
                    from ./include/linux/bvec.h:14,
                    from ./include/linux/skbuff.h:17,
                    from net/sched/act_ife.c:20:
   net/sched/act_ife.c: In function 'tcf_ife_dump':
   ./include/linux/spinlock_rt.h:44:2: error: expected expression before 'do'
      44 |  do {     \
         |  ^~
   net/sched/act_ife.c:655:2: note: in expansion of macro 'spin_lock_bh'
     655 |  spin_lock_bh(&ife->tcf_lock);
         |  ^~~~~~~~~~~~
   make[2]: *** [scripts/Makefile.build:286: net/sched/act_ife.o] Error 1
   make[2]: *** Waiting for unfinished jobs....


Thanks,

> +
>  	spin_lock_bh(&ife->tcf_lock);
>  	opt.action = ife->tcf_action;
>  	p = rcu_dereference_protected(ife->params,
> -- 
> 2.43.0
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
  2025-12-12  0:54   ` Vitaly Chikunov
@ 2025-12-12 16:26     ` Jamal Hadi Salim
  2025-12-12 16:29       ` Jamal Hadi Salim
  0 siblings, 1 reply; 11+ messages in thread
From: Jamal Hadi Salim @ 2025-12-12 16:26 UTC (permalink / raw)
  To: Vitaly Chikunov
  Cc: Ranganath V N, linux-rt-devel, edumazet, davem,
	david.hunter.linux, horms, jiri, khalid, kuba, pabeni,
	xiyou.wangcong, linux-kernel, netdev, skhan

On Thu, Dec 11, 2025 at 7:54 PM Vitaly Chikunov <vt@altlinux.org> wrote:
>
> On Sun, Nov 09, 2025 at 02:43:36PM +0530, Ranganath V N wrote:
> > Fix a KMSAN kernel-infoleak detected  by the syzbot .
> >
> > [net?] KMSAN: kernel-infoleak in __skb_datagram_iter
> >
> > In tcf_ife_dump(), the variable 'opt' was partially initialized using a
> > designatied initializer. While the padding bytes are reamined
> > uninitialized. nla_put() copies the entire structure into a
> > netlink message, these uninitialized bytes leaked to userspace.
> >
> > Initialize the structure with memset before assigning its fields
> > to ensure all members and padding are cleared prior to beign copied.
> >
> > This change silences the KMSAN report and prevents potential information
> > leaks from the kernel memory.
> >
> > This fix has been tested and validated by syzbot. This patch closes the
> > bug reported at the following syzkaller link and ensures no infoleak.
> >
> > Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> > Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
> > Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> > Fixes: ef6980b6becb ("introduce IFE action")
> > Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
> > ---
> >  net/sched/act_ife.c | 12 +++++++-----
> >  1 file changed, 7 insertions(+), 5 deletions(-)
> >
> > diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
> > index 107c6d83dc5c..7c6975632fc2 100644
> > --- a/net/sched/act_ife.c
> > +++ b/net/sched/act_ife.c
> > @@ -644,13 +644,15 @@ static int tcf_ife_dump(struct sk_buff *skb, struct tc_action *a, int bind,
> >       unsigned char *b = skb_tail_pointer(skb);
> >       struct tcf_ife_info *ife = to_ife(a);
> >       struct tcf_ife_params *p;
> > -     struct tc_ife opt = {
> > -             .index = ife->tcf_index,
> > -             .refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> > -             .bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
> > -     };
> > +     struct tc_ife opt;
> >       struct tcf_t t;
> >
> > +     memset(&opt, 0, sizeof(opt));
> > +
> > +     opt.index = ife->tcf_index,
> > +     opt.refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> > +     opt.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
>
> Are you sure this is correct to delimit with commas instead of
> semicolons?
>
> This already causes build failures of 5.10.247-rt141 kernel, because
> their spin_lock_bh unrolls into do { .. } while (0):
>

Do you have access to this?
commit 205305c028ad986d0649b8b100bab6032dcd1bb5
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Wed Nov 12 15:27:09 2025 +0800

    net/sched: act_ife: convert comma to semicolon

cheers,
jamal

>      CC [M]  net/sched/act_ife.o
>    In file included from ./include/linux/spinlock.h:329,
>                     from ./include/linux/mmzone.h:8,
>                     from ./include/linux/gfp.h:6,
>                     from ./include/linux/mm.h:10,
>                     from ./include/linux/bvec.h:14,
>                     from ./include/linux/skbuff.h:17,
>                     from net/sched/act_ife.c:20:
>    net/sched/act_ife.c: In function 'tcf_ife_dump':
>    ./include/linux/spinlock_rt.h:44:2: error: expected expression before 'do'
>       44 |  do {     \
>          |  ^~
>    net/sched/act_ife.c:655:2: note: in expansion of macro 'spin_lock_bh'
>      655 |  spin_lock_bh(&ife->tcf_lock);
>          |  ^~~~~~~~~~~~
>    make[2]: *** [scripts/Makefile.build:286: net/sched/act_ife.o] Error 1
>    make[2]: *** Waiting for unfinished jobs....
>
>
> Thanks,
>
> > +
> >       spin_lock_bh(&ife->tcf_lock);
> >       opt.action = ife->tcf_action;
> >       p = rcu_dereference_protected(ife->params,
> > --
> > 2.43.0
> >

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
  2025-12-12 16:26     ` Jamal Hadi Salim
@ 2025-12-12 16:29       ` Jamal Hadi Salim
  2025-12-14 21:38         ` Vitaly Chikunov
  0 siblings, 1 reply; 11+ messages in thread
From: Jamal Hadi Salim @ 2025-12-12 16:29 UTC (permalink / raw)
  To: Vitaly Chikunov
  Cc: Ranganath V N, linux-rt-devel, edumazet, davem,
	david.hunter.linux, horms, jiri, khalid, kuba, pabeni,
	xiyou.wangcong, linux-kernel, netdev, skhan

On Fri, Dec 12, 2025 at 11:26 AM Jamal Hadi Salim <jhs@mojatatu.com> wrote:
>
> On Thu, Dec 11, 2025 at 7:54 PM Vitaly Chikunov <vt@altlinux.org> wrote:
> >
> > On Sun, Nov 09, 2025 at 02:43:36PM +0530, Ranganath V N wrote:
> > > Fix a KMSAN kernel-infoleak detected  by the syzbot .
> > >
> > > [net?] KMSAN: kernel-infoleak in __skb_datagram_iter
> > >
> > > In tcf_ife_dump(), the variable 'opt' was partially initialized using a
> > > designatied initializer. While the padding bytes are reamined
> > > uninitialized. nla_put() copies the entire structure into a
> > > netlink message, these uninitialized bytes leaked to userspace.
> > >
> > > Initialize the structure with memset before assigning its fields
> > > to ensure all members and padding are cleared prior to beign copied.
> > >
> > > This change silences the KMSAN report and prevents potential information
> > > leaks from the kernel memory.
> > >
> > > This fix has been tested and validated by syzbot. This patch closes the
> > > bug reported at the following syzkaller link and ensures no infoleak.
> > >
> > > Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> > > Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
> > > Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> > > Fixes: ef6980b6becb ("introduce IFE action")
> > > Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
> > > ---
> > >  net/sched/act_ife.c | 12 +++++++-----
> > >  1 file changed, 7 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
> > > index 107c6d83dc5c..7c6975632fc2 100644
> > > --- a/net/sched/act_ife.c
> > > +++ b/net/sched/act_ife.c
> > > @@ -644,13 +644,15 @@ static int tcf_ife_dump(struct sk_buff *skb, struct tc_action *a, int bind,
> > >       unsigned char *b = skb_tail_pointer(skb);
> > >       struct tcf_ife_info *ife = to_ife(a);
> > >       struct tcf_ife_params *p;
> > > -     struct tc_ife opt = {
> > > -             .index = ife->tcf_index,
> > > -             .refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> > > -             .bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
> > > -     };
> > > +     struct tc_ife opt;
> > >       struct tcf_t t;
> > >
> > > +     memset(&opt, 0, sizeof(opt));
> > > +
> > > +     opt.index = ife->tcf_index,
> > > +     opt.refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> > > +     opt.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
> >
> > Are you sure this is correct to delimit with commas instead of
> > semicolons?
> >
> > This already causes build failures of 5.10.247-rt141 kernel, because
> > their spin_lock_bh unrolls into do { .. } while (0):
> >
>
> Do you have access to this?
> commit 205305c028ad986d0649b8b100bab6032dcd1bb5
> Author: Chen Ni <nichen@iscas.ac.cn>
> Date:   Wed Nov 12 15:27:09 2025 +0800
>
>     net/sched: act_ife: convert comma to semicolon
>

Sigh. I see the problem: that patch did not have a Fixes tag;
otherwise, it would have been backported.

cheers,
jamal

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
  2025-12-12 16:29       ` Jamal Hadi Salim
@ 2025-12-14 21:38         ` Vitaly Chikunov
  0 siblings, 0 replies; 11+ messages in thread
From: Vitaly Chikunov @ 2025-12-14 21:38 UTC (permalink / raw)
  To: Jamal Hadi Salim, Sebastian Andrzej Siewior, Clark Williams,
	Steven Rostedt
  Cc: Ranganath V N, linux-rt-devel, edumazet, davem,
	david.hunter.linux, horms, jiri, khalid, kuba, pabeni,
	xiyou.wangcong, linux-kernel, netdev, skhan

Jamal, and linux-rt-devel,

On Fri, Dec 12, 2025 at 11:29:24AM -0500, Jamal Hadi Salim wrote:
> On Fri, Dec 12, 2025 at 11:26 AM Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> >
> > On Thu, Dec 11, 2025 at 7:54 PM Vitaly Chikunov <vt@altlinux.org> wrote:
> > >
> > > On Sun, Nov 09, 2025 at 02:43:36PM +0530, Ranganath V N wrote:
> > > > Fix a KMSAN kernel-infoleak detected  by the syzbot .
> > > >
> > > > [net?] KMSAN: kernel-infoleak in __skb_datagram_iter
> > > >
> > > > In tcf_ife_dump(), the variable 'opt' was partially initialized using a
> > > > designatied initializer. While the padding bytes are reamined
> > > > uninitialized. nla_put() copies the entire structure into a
> > > > netlink message, these uninitialized bytes leaked to userspace.
> > > >
> > > > Initialize the structure with memset before assigning its fields
> > > > to ensure all members and padding are cleared prior to beign copied.
> > > >
> > > > This change silences the KMSAN report and prevents potential information
> > > > leaks from the kernel memory.
> > > >
> > > > This fix has been tested and validated by syzbot. This patch closes the
> > > > bug reported at the following syzkaller link and ensures no infoleak.
> > > >
> > > > Reported-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> > > > Closes: https://syzkaller.appspot.com/bug?extid=0c85cae3350b7d486aee
> > > > Tested-by: syzbot+0c85cae3350b7d486aee@syzkaller.appspotmail.com
> > > > Fixes: ef6980b6becb ("introduce IFE action")
> > > > Signed-off-by: Ranganath V N <vnranganath.20@gmail.com>
> > > > ---
> > > >  net/sched/act_ife.c | 12 +++++++-----
> > > >  1 file changed, 7 insertions(+), 5 deletions(-)
> > > >
> > > > diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
> > > > index 107c6d83dc5c..7c6975632fc2 100644
> > > > --- a/net/sched/act_ife.c
> > > > +++ b/net/sched/act_ife.c
> > > > @@ -644,13 +644,15 @@ static int tcf_ife_dump(struct sk_buff *skb, struct tc_action *a, int bind,
> > > >       unsigned char *b = skb_tail_pointer(skb);
> > > >       struct tcf_ife_info *ife = to_ife(a);
> > > >       struct tcf_ife_params *p;
> > > > -     struct tc_ife opt = {
> > > > -             .index = ife->tcf_index,
> > > > -             .refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> > > > -             .bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
> > > > -     };
> > > > +     struct tc_ife opt;
> > > >       struct tcf_t t;
> > > >
> > > > +     memset(&opt, 0, sizeof(opt));
> > > > +
> > > > +     opt.index = ife->tcf_index,
> > > > +     opt.refcnt = refcount_read(&ife->tcf_refcnt) - ref,
> > > > +     opt.bindcnt = atomic_read(&ife->tcf_bindcnt) - bind,
> > >
> > > Are you sure this is correct to delimit with commas instead of
> > > semicolons?
> > >
> > > This already causes build failures of 5.10.247-rt141 kernel, because
> > > their spin_lock_bh unrolls into do { .. } while (0):
> > >
> >
> > Do you have access to this?
> > commit 205305c028ad986d0649b8b100bab6032dcd1bb5
> > Author: Chen Ni <nichen@iscas.ac.cn>
> > Date:   Wed Nov 12 15:27:09 2025 +0800
> >
> >     net/sched: act_ife: convert comma to semicolon
> >
> 
> Sigh. I see the problem: that patch did not have a Fixes tag;
> otherwise, it would have been backported.

Thanks! I will pick this for the local builds. But, perhaps, someone
should send it to stable@kernel.org to fix the older -rt kernels too.

Thanks,

> 
> cheers,
> jamal

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-12-14 21:38 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-09  9:13 [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Ranganath V N
2025-11-09  9:13 ` [PATCH net v4 1/2] net: sched: act_connmark: initialize struct tc_ife to fix kernel leak Ranganath V N
2025-11-09  9:30   ` Eric Dumazet
2025-11-09  9:13 ` [PATCH net v4 2/2] net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak Ranganath V N
2025-11-09  9:31   ` Eric Dumazet
2025-12-12  0:54   ` Vitaly Chikunov
2025-12-12 16:26     ` Jamal Hadi Salim
2025-12-12 16:29       ` Jamal Hadi Salim
2025-12-14 21:38         ` Vitaly Chikunov
2025-11-10 20:02 ` [PATCH v4 net 0/2] net: sched: initialize struct tc_ife to fix kernel-infoleak Cong Wang
2025-11-11 14:10 ` patchwork-bot+netdevbpf

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