Re: [PATCH] ib: Init subsystems if compiled to vmlinuz-core

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

 



Leon Romanovsky <leon@xxxxxxxxxx> writes:

> On Wed, Nov 29, 2017 at 09:09:49AM +0000, Dmitry Monakhov wrote:
>> Once infiniband was compiled as core component it's subsystems must be
>> enabled before device initialization. Otherwise this result NULL pointer
>> dereference during mlx4_core init, calltrace:
>> ->device_add
>>   if (dev->class) {
>>      deref  dev->class->p =>NULLPTR
>>
>> #Config
>> CONFIG_NET_DEVLINK=y
>> CONFIG_MAY_USE_DEVLINK=y
>> CONFIG_MLX4_EN=y
>>
>> Signed-off-by: Dmitry Monakhov <dmonakhov@xxxxxxxxxx>
>> ---
>>  drivers/infiniband/core/cm.c        | 2 +-
>>  drivers/infiniband/core/device.c    | 2 +-
>>  drivers/infiniband/ulp/srp/ib_srp.c | 2 +-
>>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> First please follow submission rules (patch versioning and changelog)
> and second, I have hard time to believe that those changes in CM and SRP
> are really needed.
Ok. Seems you are right.
CM: ib_cm_init is always called prior to it's user (ib_ucm_init )
SRP: srp_class used only internally.

First version is enouth. Sorry for a noise.
>
> Can you please provide actual kernel panic *without* any changes to init
> sequences?
>
> Thanks
>
>>
>> diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
>> index 4c4b465..1012fd8 100644
>> --- a/drivers/infiniband/core/cm.c
>> +++ b/drivers/infiniband/core/cm.c
>> @@ -4370,6 +4370,6 @@ static void __exit ib_cm_cleanup(void)
>>  	idr_destroy(&cm.local_id_table);
>>  }
>>
>> -module_init(ib_cm_init);
>> +subsys_initcall(ib_cm_init);
>>  module_exit(ib_cm_cleanup);
>>
>> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
>> index 84fc32a..5e1be49 100644
>> --- a/drivers/infiniband/core/device.c
>> +++ b/drivers/infiniband/core/device.c
>> @@ -1253,5 +1253,5 @@ static void __exit ib_core_cleanup(void)
>>
>>  MODULE_ALIAS_RDMA_NETLINK(RDMA_NL_LS, 4);
>>
>> -module_init(ib_core_init);
>> +subsys_initcall(ib_core_init);
>>  module_exit(ib_core_cleanup);
>> diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
>> index fa5ccdb..0c21a71 100644
>> --- a/drivers/infiniband/ulp/srp/ib_srp.c
>> +++ b/drivers/infiniband/ulp/srp/ib_srp.c
>> @@ -3785,5 +3785,5 @@ static void __exit srp_cleanup_module(void)
>>  	destroy_workqueue(srp_remove_wq);
>>  }
>>
>> -module_init(srp_init_module);
>> +subsys_initcall(srp_init_module);
>>  module_exit(srp_cleanup_module);
>> --
>> 1.8.3.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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