RE: new trace in RDMA next

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Jason Gunthorpe <jgg@xxxxxxxx>
> Sent: Thursday, April 18, 2019 1:22 AM
> To: Parav Pandit <parav@xxxxxxxxxxxx>
> Cc: Marciniszyn, Mike <mike.marciniszyn@xxxxxxxxx>; Leon Romanovsky
> <leonro@xxxxxxxxxxxx>; linux-rdma@xxxxxxxxxxxxxxx
> Subject: Re: new trace in RDMA next
> 
> On Wed, Apr 17, 2019 at 07:22:59PM +0000, Parav Pandit wrote:
> > Hi Mike,
> >
> > > From: linux-rdma-owner@xxxxxxxxxxxxxxx <linux-rdma-
> > > owner@xxxxxxxxxxxxxxx> On Behalf Of Marciniszyn, Mike
> > > Sent: Wednesday, April 17, 2019 1:56 PM
> > > To: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> > > Cc: linux-rdma@xxxxxxxxxxxxxxx
> > > Subject: new trace in RDMA next
> > >
> > > Leon,
> > >
> > > We seem to be getting a new trace with the RDMA for-next patches.
> > >
> > > Here is the trace:
> > >
> > > systemd: Starting Hostname Service...
> > > kobject (00000000b8a5bae6): tried to init an initialized object,
> > > something is seriously wrong.
> > > CPU: 68 PID: 2098 Comm: (ostnamed) Not tainted 5.1.0-rc4 #1
> > >
> > > Call Trace:
> > > dump_stack+0x5a/0x73
> > > kobject_init+0x74/0x80
> > > kobject_init_and_add+0x35/0xb0
> > > hfi1_create_port_files+0x6e/0x3c0 [hfi1]
> > > ib_setup_port_attrs+0x43b/0x560 [ib_core]
> > > add_one_compat_dev+0x16a/0x230 [ib_core]
> > > rdma_dev_init_net+0x110/0x160 [ib_core]
> > > ops_init+0x38/0xf0
> > > setup_net+0xcf/0x1e0
> > > copy_net_ns+0xb7/0x130
> > > create_new_namespaces+0x11a/0x1b0
> > > unshare_nsproxy_namespaces+0x55/0xa0
> > > ksys_unshare+0x1a7/0x340
> > > __x64_sys_unshare+0xe/0x20
> > > do_syscall_64+0x5b/0x180
> > > entry_SYSCALL_64_after_hwframe+0x44/0xa9
> > >
> > > It seems the core is calling init_port(hfi1_create_port_files)
> > > twice, the first during ib_register_device() and the second from the stack
> above.
> > >
> > > There is a comment in add_one_compat_dev() noting the race:
> > >
> > > /*
> > >  * The first of init_net() or ib_register_device() to take the
> > >  * compat_devs_mutex wins and gets to add the device. Others will
> > > wait
> > >  * for completion here.
> > >  */
> > > mutex_lock(&device->compat_devs_mutex);
> > > cdev = xa_load(&device->compat_devs, rnet->id); if (cdev) {
> > >         ret = 0;
> > >         goto done;
> > > }
> > >
> > > I don't see any xa_store() to compat_devs or use of the mutex in the
> > > ib_register_device() path?
> > >
> > The issue is not with xa_store or lock.
> > Issue is that hfi1_create_port_files() is trying to create sysfs files out ppd-
> >sc2vl_kobj, which is already initialized during ib_register_device().
> > For every net ns, my patches are adding compat devices which probably
> shouldn't invoke init_port for those compat devices as it not meaningful.
> >
> > Attached patch should fix it.
> > Can you please test it? I do not have hfi hw.
> > I will inline the patch, in case attachment doesn't work.
> 
> convert the double bool arguments to a flag please before you send it.
> 
Ok. I will change that apart from other corrections.

> Jason




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux