> From: linux-hyperv-owner@xxxxxxxxxxxxxxx > <linux-hyperv-owner@xxxxxxxxxxxxxxx> On Behalf Of Stefano Garzarella > Sent: Thursday, September 26, 2019 12:48 AM > > Hi Dexuan, > > On Thu, Sep 26, 2019 at 01:11:27AM +0000, Dexuan Cui wrote: > > ... > > NOTE: I only tested the code on Hyper-V. I can not test the code for > > virtio socket, as I don't have a KVM host. :-( Sorry. > > > > @Stefan, @Stefano: please review & test the patch for virtio socket, > > and let me know if the patch breaks anything. Thanks! > > Comment below, I'll test it ASAP! Stefano, Thank you! BTW, this is how I tested the patch: 1. write a socket server program in the guest. The program calls listen() and then calls sleep(10000 seconds). Note: accept() is not called. 2. create some connections to the server program in the guest. 3. kill the server program by Ctrl+C, and "dmesg" will show the scary call-trace, if the kernel is built with CONFIG_LOCKDEP=y CONFIG_LOCKDEP_SUPPORT=y 4. Apply the patch, do the same test and we should no longer see the call-trace. > > - lock_sock(sk); > > + /* When "level" is 2, use the nested version to avoid the > > + * warning "possible recursive locking detected". > > + */ > > + if (level == 1) > > + lock_sock(sk); > > Since lock_sock() calls lock_sock_nested(sk, 0), could we use directly > lock_sock_nested(sk, level) with level = 0 in vsock_release() and > level = SINGLE_DEPTH_NESTING here in the while loop? > > Thanks, > Stefano IMHO it's better to make the lock usage more explicit, as the patch does. lock_sock_nested(sk, level) or lock_sock_nested(sk, 0) seems a little odd to me. But I'm open to your suggestion: if any of the network maintainers, e.g. davem, also agrees with you, I'll change the code as you suggested. :-) Thanks, -- Dexuan