virtio-mem: fix sleeping in RCU read side section in virtio_mem_online_page_cb()
authorDavid Hildenbrand <david@redhat.com>
Wed, 25 Aug 2021 10:24:15 +0000 (12:24 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 27 Aug 2021 18:39:36 +0000 (11:39 -0700)
commit425bec0032f59eeee12520085cd054fac09cc66e
tree25477a10d8312d0c89b9ab2779c4821c8c7d56b5
parent5a61b7a29647ed7c939ca76d3bf83c75d10ba16e
virtio-mem: fix sleeping in RCU read side section in virtio_mem_online_page_cb()

virtio_mem_set_fake_offline() might sleep now, and we call it under
rcu_read_lock(). To fix it, simply move the rcu_read_unlock() further
up, as we're done with the device.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Fixes: 6cc26d77613a: "virtio-mem: use page_offline_(start|end) when setting PageOffline()
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/virtio/virtio_mem.c