aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/mem.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-07-27 12:42:15 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-07-27 12:42:15 +0200
commit908e757daecf2120c3019fa630ae5d4c3cd7165b (patch)
tree652b0f3ecd4a6d7c0066169d6ae466711300197c /drivers/char/mem.c
parentstaging: comedi: addi: Replace HTTP links with HTTPS ones (diff)
parentLinux 5.8-rc7 (diff)
downloadlinux-dev-908e757daecf2120c3019fa630ae5d4c3cd7165b.tar.xz
linux-dev-908e757daecf2120c3019fa630ae5d4c3cd7165b.zip
Merge 5.8-rc7 into staging-next
We need the staging fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/char/mem.c')
-rw-r--r--drivers/char/mem.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 934c92dcb9ab..687d4af6945d 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -814,7 +814,8 @@ static struct inode *devmem_inode;
#ifdef CONFIG_IO_STRICT_DEVMEM
void revoke_devmem(struct resource *res)
{
- struct inode *inode = READ_ONCE(devmem_inode);
+ /* pairs with smp_store_release() in devmem_init_inode() */
+ struct inode *inode = smp_load_acquire(&devmem_inode);
/*
* Check that the initialization has completed. Losing the race
@@ -1028,8 +1029,11 @@ static int devmem_init_inode(void)
return rc;
}
- /* publish /dev/mem initialized */
- WRITE_ONCE(devmem_inode, inode);
+ /*
+ * Publish /dev/mem initialized.
+ * Pairs with smp_load_acquire() in revoke_devmem().
+ */
+ smp_store_release(&devmem_inode, inode);
return 0;
}