RE: [PATCH 5/5] staging: hv: fix a kernel warning innetvsc_linkstatus_callback()

From: Haiyang Zhang
Date: Tue Jul 05 2011 - 14:45:47 EST


> -----Original Message-----
> From: Greg KH [mailto:greg@xxxxxxxxx]
> Sent: Tuesday, July 05, 2011 12:10 PM
> To: Haiyang Zhang
> Cc: Hank Janssen; KY Srinivasan; Abhishek Kane (Mindtree Consulting PVT
> LTD); gregkh@xxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> devel@xxxxxxxxxxxxxxxxxxxxxx; virtualization@xxxxxxxxxxxxxx; stable
> Subject: Re: [PATCH 5/5] staging: hv: fix a kernel warning in
> netvsc_linkstatus_callback()
>
> On Fri, Jun 17, 2011 at 07:58:08AM -0700, Haiyang Zhang wrote:
> > netif_notify_peers() is not allowed in netvsc_linkstatus_callback() on
> some
> > distros,
>
> "distros"? Huh? You mean kernel versions right?
>
> And this doesn't matter for the current kernel, right? If not, then it
> doesn't need to be applied. If so, then it should. Which is it?

It should be applied to both current kernel and stable kernels 2.6.32 and later.

> > because netvsc_linkstatus_callback() is within IRQ context. So we
> > move the first call to netif_notify_peers() into queued work as well,
> but with
> > zero delay.
>
> What happens if you don't have this patch applied? What breaks? Is it
> just a warning? Something else?

Without the patch, it will have this warning:

[ 232.102605] WARNING: at kernel/mutex.c:198 __mutex_lock_slowpath+0x28d/0x2c0(
)
[ 232.102605] Hardware name: Virtual Machine
[ 232.272436] Modules linked in: hv_netvsc(C) hv_vmbus(C) lockd sunrpc nf_connt
rack_netbios_ns nf_conntrack_broadcast ipt_REJECT nf_conntrack_ipv4 nf_defrag_ip
v4 xt_state nf_conntrack iptable_filter ip_tables ip6t_REJECT xt_tcpudp ip6table
_filter ip6_tables x_tables ipv6 loop dm_mirror dm_multipath scsi_dh video therm
al sbs sbshc pci_slot hed fan container battery acpi_memhotplug ac power_supply
parport nvram sg sr_mod cdrom evdev processor button serio_raw floppy tpm_tis tp
m tpm_bios tulip i2c_piix4 i2c_core dm_region_hash dm_log dm_mod ide_gd_mod piix
pata_acpi ide_pci_generic ide_core ata_piix ata_generic libata sd_mod scsi_mod
ext3 jbd mbcache [last unloaded: microcode]
[ 232.935109] Pid: 0, comm: swapper Tainted: G C 3.0.0-rc2-stable-0019
6-g06e8684 #4
[ 232.939905] Call Trace:
[ 232.942238] [<c13008fd>] ? __mutex_lock_slowpath+0x28d/0x2c0
[ 232.974990] [<c1041a9c>] warn_slowpath_common+0x7c/0xa0
[ 232.977701] [<c13008fd>] ? __mutex_lock_slowpath+0x28d/0x2c0
[ 232.980431] [<c1041add>] warn_slowpath_null+0x1d/0x20
[ 232.983403] [<c13008fd>] __mutex_lock_slowpath+0x28d/0x2c0
[ 232.995597] [<c130093b>] mutex_lock+0xb/0x20
[ 233.020191] [<c127347d>] rtnl_lock+0xd/0x10
[ 233.023275] [<c127cf7b>] netif_notify_peers+0xb/0x20
[ 233.026424] [<e0e581d2>] netvsc_linkstatus_callback+0x142/0x230 [hv_netvsc]
[ 233.051372] [<e0e5c0df>] rndis_filter_receive+0x83f/0x8e0 [hv_netvsc]
[ 233.062010] [<e0e3c82e>] ? hv_ringbuffer_read+0x15e/0x200 [hv_vmbus]
[ 233.065632] [<e0e5a936>] netvsc_channel_cb+0x8e6/0xb10 [hv_netvsc]
[ 233.069444] [<e0e38743>] vmbus_onchannel_event+0x33/0x80 [hv_vmbus]
[ 233.092295] [<e0e37bb8>] vmbus_on_event+0xf8/0x180 [hv_vmbus]
[ 233.104314] [<c104850f>] tasklet_action+0x4f/0x100
[ 233.106669] [<c1047876>] __do_softirq+0x86/0x1e0
[ 233.109376] [<c10477f0>] ? local_bh_enable_ip+0xa0/0xa0
[ 233.112031] <IRQ> [<c1047b6c>] ? irq_exit+0x8c/0xa0
[ 233.133300] [<c10040a5>] ? do_IRQ+0x45/0xb0
[ 233.136307] [<c1047b4e>] ? irq_exit+0x6e/0xa0
[ 233.138901] [<c101d149>] ? smp_apic_timer_interrupt+0x59/0x90
[ 233.142796] [<c1302db0>] ? common_interrupt+0x30/0x38
[ 233.146401] [<c1024be5>] ? native_safe_halt+0x5/0x10
[ 233.149765] [<c1009b00>] ? default_idle+0x70/0x130
[ 233.154054] [<c1001dda>] ? cpu_idle+0x8a/0xd0
[ 233.157170] [<c12eb4dd>] ? rest_init+0x7d/0x80
[ 233.168628] [<c14239e5>] ? start_kernel+0x315/0x3d0
[ 233.171518] [<c1423270>] ? parse_early_options+0x30/0x30
[ 233.180398] [<c1423078>] ? i386_start_kernel+0x78/0xc0
[ 233.183514] ---[ end trace 3a5b5bc7486ad570 ]---

> Please resend this with more information.
Will do (after Ky's patch series are resubmitted and applied).

Thanks,

- Haiyang

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/