diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2017-05-27 06:56:13 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-05-27 22:41:45 +0300 |
commit | c02205e9f3f8e4429e5531981906bf25282938b7 (patch) | |
tree | fa9ea690f2ec67bca923ae50508a3443515244d2 /drivers/dio | |
parent | f9f5796e7a534cc99cee577be47e109d5123baf1 (diff) | |
download | linux-c02205e9f3f8e4429e5531981906bf25282938b7.tar.xz |
dio: use probe_kernel_read()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/dio')
-rw-r--r-- | drivers/dio/dio.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/drivers/dio/dio.c b/drivers/dio/dio.c index 830184529109..0d0677f23916 100644 --- a/drivers/dio/dio.c +++ b/drivers/dio/dio.c @@ -116,7 +116,6 @@ int __init dio_find(int deviceid) */ int scode, id; u_char prid, secid, i; - mm_segment_t fs; for (scode = 0; scode < DIO_SCMAX; scode++) { void *va; @@ -135,17 +134,12 @@ int __init dio_find(int deviceid) else va = ioremap(pa, PAGE_SIZE); - fs = get_fs(); - set_fs(KERNEL_DS); - - if (get_user(i, (unsigned char *)va + DIO_IDOFF)) { - set_fs(fs); + if (probe_kernel_read(&i, (unsigned char *)va + DIO_IDOFF, 1)) { if (scode >= DIOII_SCBASE) iounmap(va); continue; /* no board present at that select code */ } - set_fs(fs); prid = DIO_ID(va); if (DIO_NEEDSSECID(prid)) { @@ -170,7 +164,6 @@ int __init dio_find(int deviceid) static int __init dio_init(void) { int scode; - mm_segment_t fs; int i; struct dio_dev *dev; int error; @@ -214,18 +207,12 @@ static int __init dio_init(void) else va = ioremap(pa, PAGE_SIZE); - fs = get_fs(); - set_fs(KERNEL_DS); - - if (get_user(i, (unsigned char *)va + DIO_IDOFF)) { - set_fs(fs); + if (probe_kernel_read(&i, (unsigned char *)va + DIO_IDOFF, 1)) { if (scode >= DIOII_SCBASE) iounmap(va); continue; /* no board present at that select code */ } - set_fs(fs); - /* Found a board, allocate it an entry in the list */ dev = kzalloc(sizeof(struct dio_dev), GFP_KERNEL); if (!dev) |