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: <202302211734.1d9915a-yujie.liu@intel.com>
Date:   Wed, 22 Feb 2023 00:41:31 +0800
From:   kernel test robot <yujie.liu@...el.com>
To:     Kassey Li <quic_yingangl@...cinc.com>
CC:     <oe-lkp@...ts.linux.dev>, <lkp@...el.com>,
        <netdev@...r.kernel.org>, <davem@...emloft.net>,
        <edumazet@...gle.com>, Kassey Li <quic_yingangl@...cinc.com>,
        <kuba@...nel.org>, <pabeni@...hat.com>
Subject: Re: [PATCH] net: disable irq in napi_poll

Greeting,

FYI, we noticed WARNING:at_kernel/softirq.c:#__local_bh_enable_ip due to commit (built with gcc-11):

commit: ed417c671fa6b56ce9f6db582d21c3a608838929 ("[PATCH] net: disable irq in napi_poll")
url: https://github.com/intel-lab-lkp/linux/commits/Kassey-Li/net-disable-irq-in-napi_poll/20230215-152235
base: https://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git 1ed32ad4a3cb7c6a8764510565e15ab46b5fdd19
patch link: https://lore.kernel.org/all/20230215072046.4000-1-quic_yingangl@quicinc.com/
patch subject: [PATCH] net: disable irq in napi_poll

in testcase: trinity
version: trinity-static-x86_64-x86_64-1c734c75-1_2020-01-06
with following parameters:

	runtime: 300s

test-description: Trinity is a linux system call fuzz tester.
test-url: http://codemonkey.org.uk/projects/trinity/

on test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G

caused below changes (please refer to attached dmesg/kmsg for entire log/backtrace):


[   22.476967][    C0] ------------[ cut here ]------------
[ 22.477861][ C0] WARNING: CPU: 0 PID: 56 at kernel/softirq.c:376 __local_bh_enable_ip (kernel/softirq.c:376) 
[   22.479087][    C0] Modules linked in:
[   22.479648][    C0] CPU: 0 PID: 56 Comm: kworker/0:2 Tainted: G                T  6.2.0-rc7-01664-ged417c671fa6 #41
[   22.481139][    C0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.0-debian-1.16.0-5 04/01/2014
[   22.482568][    C0] Workqueue: ipv6_addrconf addrconf_dad_work
[ 22.483472][ C0] RIP: 0010:__local_bh_enable_ip (kernel/softirq.c:376) 
[ 22.486242][ C0] Code: c7 c7 ec 5c 58 84 e8 f7 9e 3f 00 83 3d e0 75 3f 03 00 74 18 65 8b 05 0b 92 05 7f 85 c0 75 0d 65 8b 05 4c 90 e9 7e 85 c0 75 02 <0f> 0b 9c 58 fa 0f ba e0 09 73 05 e8 6d 98 1b 00 65 8b 05 0d af 06
All code
========
   0:	c7 c7 ec 5c 58 84    	mov    $0x84585cec,%edi
   6:	e8 f7 9e 3f 00       	callq  0x3f9f02
   b:	83 3d e0 75 3f 03 00 	cmpl   $0x0,0x33f75e0(%rip)        # 0x33f75f2
  12:	74 18                	je     0x2c
  14:	65 8b 05 0b 92 05 7f 	mov    %gs:0x7f05920b(%rip),%eax        # 0x7f059226
  1b:	85 c0                	test   %eax,%eax
  1d:	75 0d                	jne    0x2c
  1f:	65 8b 05 4c 90 e9 7e 	mov    %gs:0x7ee9904c(%rip),%eax        # 0x7ee99072
  26:	85 c0                	test   %eax,%eax
  28:	75 02                	jne    0x2c
  2a:*	0f 0b                	ud2    		<-- trapping instruction
  2c:	9c                   	pushfq 
  2d:	58                   	pop    %rax
  2e:	fa                   	cli    
  2f:	0f ba e0 09          	bt     $0x9,%eax
  33:	73 05                	jae    0x3a
  35:	e8 6d 98 1b 00       	callq  0x1b98a7
  3a:	65                   	gs
  3b:	8b                   	.byte 0x8b
  3c:	05                   	.byte 0x5
  3d:	0d                   	.byte 0xd
  3e:	af                   	scas   %es:(%rdi),%eax
  3f:	06                   	(bad)  

Code starting with the faulting instruction
===========================================
   0:	0f 0b                	ud2    
   2:	9c                   	pushfq 
   3:	58                   	pop    %rax
   4:	fa                   	cli    
   5:	0f ba e0 09          	bt     $0x9,%eax
   9:	73 05                	jae    0x10
   b:	e8 6d 98 1b 00       	callq  0x1b987d
  10:	65                   	gs
  11:	8b                   	.byte 0x8b
  12:	05                   	.byte 0x5
  13:	0d                   	.byte 0xd
  14:	af                   	scas   %es:(%rdi),%eax
  15:	06                   	(bad)  
[   22.489103][    C0] RSP: 0018:ffff8883aee096d0 EFLAGS: 00010046
[   22.490095][    C0] RAX: 0000000000000000 RBX: 0000000000000200 RCX: 1ffffffff08b0b9d
[   22.491351][    C0] RDX: dffffc0000000000 RSI: 0000000000000200 RDI: ffffffff825bdeb5
[   22.492537][    C0] RBP: ffff8883aee096e0 R08: 0000000000000000 R09: 0000000000000000
[   22.493640][    C0] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff825bdeb5
[   22.494729][    C0] R13: ffff88811c6d5b40 R14: 0000000000000000 R15: 0000000000000002
[   22.495828][    C0] FS:  0000000000000000(0000) GS:ffff8883aee00000(0000) knlGS:0000000000000000
[   22.497038][    C0] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   22.497951][    C0] CR2: 00007f2d57caffb0 CR3: 000000011cbe4000 CR4: 00000000000406f0
[   22.499055][    C0] Call Trace:
[   22.499517][    C0]  <IRQ>
[ 22.499936][ C0] ip6_pol_route (net/ipv6/route.c:2259) 
[ 22.500722][ C0] ? ip6_pol_route_lookup (net/ipv6/route.c:2203) 
[ 22.501612][ C0] ? fib6_table_lookup (net/ipv6/route.c:2458) 
[ 22.502425][ C0] ip6_pol_route_input (net/ipv6/route.c:2276) 
[ 22.503215][ C0] ? ip6_pol_route (net/ipv6/route.c:2274) 
[ 22.504008][ C0] fib6_rule_lookup (net/ipv6/ip6_fib.c:320) 
[ 22.504800][ C0] ip6_route_input_lookup (net/ipv6/route.c:2288) 
[ 22.505648][ C0] ip6_route_input (net/ipv6/route.c:2583) 
[ 22.506387][ C0] ? ip6_validate_gw (net/ipv6/route.c:2558) 
[ 22.507176][ C0] ip6_rcv_finish_core+0x1b5/0x1c5 
[ 22.508115][ C0] ip6_list_rcv_finish+0x364/0x46f 
[ 22.508987][ C0] ? rcu_lock_acquire (arch/x86/include/asm/preempt.h:80 include/linux/rcupdate.h:94 include/linux/rcupdate.h:762 kernel/notifier.c:224) 
[ 22.509817][ C0] ipv6_list_rcv (net/ipv6/ip6_input.c:325) 
[ 22.510495][ C0] ? ipv6_rcv (net/ipv6/ip6_input.c:325) 
[ 22.511069][ C0] ? do_xdp_generic (net/core/dev.c:5273) 
[ 22.511785][ C0] __netif_receive_skb_list_ptype (net/core/dev.c:5528) 
[ 22.512621][ C0] __netif_receive_skb_list_core (net/core/dev.c:5538) 
[ 22.513510][ C0] ? __netif_receive_skb_core+0xcdf/0xcdf 
[ 22.514483][ C0] ? dma_direct_map_page (kernel/dma/direct.h:101) 
[ 22.515243][ C0] ? dma_to_phys+0xad/0xad 
[ 22.516004][ C0] netif_receive_skb_list_internal (net/core/dev.c:5630 net/core/dev.c:5719) 
[ 22.516916][ C0] ? process_backlog (net/core/dev.c:5691) 
[ 22.517629][ C0] ? e1000_alloc_rx_buffers (drivers/net/ethernet/intel/e1000/e1000_main.c:4628) 
[ 22.518433][ C0] gro_normal_list (include/linux/list.h:37 include/net/gro.h:434) 
[ 22.519104][ C0] napi_complete_done (include/linux/list.h:292 net/core/dev.c:6061) 
[ 22.519830][ C0] ? gro_normal_list (net/core/dev.c:6026) 
[ 22.520517][ C0] e1000_clean (drivers/net/ethernet/intel/e1000/e1000_main.c:3811) 
[ 22.521135][ C0] ? hlock_class (arch/x86/include/asm/bitops.h:228 arch/x86/include/asm/bitops.h:240 include/asm-generic/bitops/instrumented-non-atomic.h:142 kernel/locking/lockdep.c:227) 
[ 22.521792][ C0] ? mark_lock (kernel/locking/lockdep.c:4612 (discriminator 3)) 
[ 22.522408][ C0] ? e1000_clean_tx_irq (drivers/net/ethernet/intel/e1000/e1000_main.c:3796) 
[ 22.523134][ C0] ? mark_held_locks (kernel/locking/lockdep.c:4236) 
[ 22.523849][ C0] __napi_poll+0xa4/0x2b8 
[ 22.524628][ C0] net_rx_action (net/core/dev.c:6557 (discriminator 3) net/core/dev.c:6666 (discriminator 3)) 
[ 22.525304][ C0] ? __napi_poll+0x2b8/0x2b8 
[ 22.526094][ C0] ? rcu_read_lock_sched_held (kernel/rcu/update.c:125) 
[ 22.526896][ C0] ? lock_is_held (include/linux/sched.h:1566) 
[   22.527129][   T72] /dev/root: Can't open blockdev
[ 22.527469][ C0] __do_softirq (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:207 include/trace/events/irq.h:142 kernel/softirq.c:572) 
[ 22.528738][ C0] ? rcu_read_unlock_bh (include/linux/rcupdate.h:330 include/linux/rcupdate.h:832) 
[ 22.529484][ C0] do_softirq (kernel/softirq.c:472) 
[   22.530076][    C0]  </IRQ>
[   22.530513][    C0]  <TASK>
[ 22.530954][ C0] __local_bh_enable_ip (arch/x86/include/asm/preempt.h:85 kernel/softirq.c:399) 
[ 22.531677][ C0] rcu_read_unlock_bh (include/linux/lockdep.h:191 include/linux/lockdep.h:198 include/linux/lockdep.h:204) 
[ 22.532368][ C0] ip6_finish_output2 (net/ipv6/ip6_output.c:135) 
[ 22.532953][ C0] ? ip6_mtu (net/ipv6/route.c:3206) 
[ 22.533439][ C0] ip6_output (net/ipv6/ip6_output.c:195 net/ipv6/ip6_output.c:206 include/linux/netfilter.h:403 net/ipv6/ip6_output.c:227) 
[ 22.533923][ C0] ndisc_send_skb (net/ipv6/ndisc.c:511 (discriminator 142)) 
[ 22.534453][ C0] ? ndisc_ifinfo_sysctl_change (net/ipv6/ndisc.c:472) 
[ 22.535116][ C0] ? ndisc_fill_addr_option (net/ipv6/ndisc.c:173) 
[ 22.535733][ C0] ndisc_send_rs (net/ipv6/ndisc.c:719) 
[ 22.536258][ C0] addrconf_dad_completed (net/ipv6/addrconf.c:4255) 
[ 22.536840][ C0] ? lock_is_held (include/linux/lockdep.h:284) 
[ 22.537335][ C0] ? addrconf_verify_work (net/ipv6/addrconf.c:4203) 
[ 22.537900][ C0] ? addrconf_dad_work (net/ipv6/addrconf.c:4154) 
[ 22.538466][ C0] addrconf_dad_work (net/ipv6/addrconf.c:4164) 
[ 22.539001][ C0] ? addrconf_dad_work (net/ipv6/addrconf.c:4164) 
[ 22.539570][ C0] ? addrconf_ifdown+0xae1/0xae1 
[ 22.540302][ C0] ? rcu_read_lock_sched_held (kernel/rcu/update.c:125) 
[ 22.541088][ C0] ? lock_is_held (include/linux/sched.h:1566) 
[ 22.541681][ C0] process_one_work (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:207 include/trace/events/workqueue.h:108 kernel/workqueue.c:2294) 
[ 22.542251][ C0] ? max_active_store (kernel/workqueue.c:2184) 
[ 22.542814][ C0] worker_thread (include/linux/list.h:292 kernel/workqueue.c:2437) 
[ 22.543313][ C0] ? trace_hardirqs_on (kernel/trace/trace_preemptirq.c:51 (discriminator 22)) 
[ 22.543895][ C0] kthread (kernel/kthread.c:376) 
[ 22.544343][ C0] ? rescuer_thread (kernel/workqueue.c:2379) 
[ 22.544867][ C0] ? kthread_complete_and_exit (kernel/kthread.c:331) 
[ 22.545480][ C0] ret_from_fork (arch/x86/entry/entry_64.S:314) 
[   22.546008][    C0]  </TASK>
[   22.546347][    C0] irq event stamp: 265
[ 22.546787][ C0] hardirqs last enabled at (264): net_rx_action (arch/x86/include/asm/irqflags.h:45 arch/x86/include/asm/irqflags.h:80 net/core/dev.c:6651) 
[ 22.547781][ C0] hardirqs last disabled at (265): net_rx_action (net/core/dev.c:6551 (discriminator 3) net/core/dev.c:6666 (discriminator 3)) 
[ 22.548750][ C0] softirqs last enabled at (260): rcu_read_unlock_bh (include/linux/rcupdate.h:330 include/linux/rcupdate.h:832) 
[ 22.549741][ C0] softirqs last disabled at (261): do_softirq (kernel/softirq.c:472) 
[   22.550664][    C0] ---[ end trace 0000000000000000 ]---


If you fix the issue, kindly add following tag
| Reported-by: kernel test robot <yujie.liu@...el.com>
| Link: https://lore.kernel.org/oe-lkp/202302211734.1d9915a-yujie.liu@intel.com


To reproduce:

        # build kernel
	cd linux
	cp config-6.2.0-rc7-01664-ged417c671fa6 .config
	make HOSTCC=gcc-11 CC=gcc-11 ARCH=x86_64 olddefconfig prepare modules_prepare bzImage modules
	make HOSTCC=gcc-11 CC=gcc-11 ARCH=x86_64 INSTALL_MOD_PATH=<mod-install-dir> modules_install
	cd <mod-install-dir>
	find lib/ | cpio -o -H newc --quiet | gzip > modules.cgz


        git clone https://github.com/intel/lkp-tests.git
        cd lkp-tests
        bin/lkp qemu -k <bzImage> -m modules.cgz job-script # job-script is attached in this email

        # if come across any failure that blocks the test,
        # please remove ~/.lkp and /lkp dir to run from a clean state.


-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

View attachment "config-6.2.0-rc7-01664-ged417c671fa6" of type "text/plain" (151036 bytes)

View attachment "job-script" of type "text/plain" (4676 bytes)

Download attachment "dmesg.xz" of type "application/x-xz" (31272 bytes)

View attachment "trinity" of type "text/plain" (2228 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ