RDMA/core: Fix missed initialization of rdma_hw_stats::lock

alloc_and_bind() creates a new rdma_hw_stats structure but misses
initializing the mutex lock.

This causes debug kernel failures:

 DEBUG_LOCKS_WARN_ON(lock->magic != lock)
 WARNING: CPU: 4 PID: 64464 at kernel/locking/mutex.c:575 __mutex_lock+0x9c3/0x12b0
 Call Trace:
  fill_res_counter_entry+0x6ee/0x1020 [ib_core]
  res_get_common_dumpit+0x907/0x10a0 [ib_core]
  nldev_stat_get_dumpit+0x20a/0x290 [ib_core]
  netlink_dump+0x451/0x1040
  __netlink_dump_start+0x583/0x830
  rdma_nl_rcv_msg+0x3f3/0x7c0 [ib_core]
  rdma_nl_rcv+0x264/0x410 [ib_core]
  netlink_unicast+0x433/0x700
  netlink_sendmsg+0x707/0xbf0
  sock_sendmsg+0xb0/0xe0
  __sys_sendto+0x193/0x240
  __x64_sys_sendto+0xdd/0x1b0
  do_syscall_64+0x3d/0x90
  entry_SYSCALL_64_after_hwframe+0x44/0xae

Instead of requiring all users to open code initialization of the lock put
it in the general rdma_alloc_hw_stats_struct() function and remove
duplicates.

Fixes: c4ffee7c9b ("RDMA/netlink: Implement counter dumpit calback")
Link: https://lore.kernel.org/r/4a22986c4685058d2c735d91703ee7d865815bb9.1635237668.git.leonro@nvidia.com
Signed-off-by: Mark Zhang <markzhang@nvidia.com>
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
Mark Zhang
2021-10-26 11:43:03 +03:00
committed by Jason Gunthorpe
parent 66f4817b57
commit 067113d9db
2 changed files with 1 additions and 2 deletions
+1
View File
@@ -3002,6 +3002,7 @@ struct rdma_hw_stats *rdma_alloc_hw_stats_struct(
stats->descs = descs;
stats->num_counters = num_counters;
stats->lifespan = msecs_to_jiffies(lifespan);
mutex_init(&stats->lock);
return stats;