IB/sa: Put netlink request into the request list before sending
authorKaike Wan <kaike.wan@intel.com>
Fri, 30 Oct 2015 12:23:45 +0000 (08:23 -0400)
committerDoug Ledford <dledford@redhat.com>
Mon, 7 Dec 2015 21:43:01 +0000 (16:43 -0500)
commit3ebd2fd0d0119a5ac7906bf17be637b527f63d31
tree518ee72b3460856c4eef08f6cf19d46d860b1d1c
parent2c63d1072ad7cf1059333ef5cfa06075bead4a39
IB/sa: Put netlink request into the request list before sending

It was found by Saurabh Sengar that the netlink code tried to allocate
memory with GFP_KERNEL while holding a spinlock. While it is possible
to fix the issue by replacing GFP_KERNEL with GFP_ATOMIC, it is better
to get rid of the spinlock while sending the packet. However, in order
to protect against a race condition that a quick response may be received
before the request is put on the request list, we need to put the request
on the list first.

Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reported-by: Saurabh Sengar <saurabh.truth@gmail.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/sa_query.c