OSDN Git Service

msm: ADSPRPC: use access_ok to validate pointers
authorc_mtharu <mtharu@codeaurora.org>
Mon, 27 Nov 2017 14:43:28 +0000 (20:13 +0530)
committerGerrit - the friendly Code Review server <code-review@localhost>
Mon, 4 Dec 2017 10:34:54 +0000 (02:34 -0800)
Check the validity of the pointer in user space that you intend to
access. access_ok function simply checks that the address is likely
in user space, not in the kernel.

Change-Id: I936f73a2c2029f9e7ca12cc8fc06d0698e6710c0
Signed-off-by: Tharun Kumar Merugu <mtharu@codeaurora.org>
drivers/char/adsprpc.c

index 10753f2..43bcd61 100644 (file)
@@ -1654,12 +1654,19 @@ static int fastrpc_init_process(struct fastrpc_file *fl,
                inbuf.namelen = strlen(current->comm) + 1;
                inbuf.filelen = init->filelen;
                fl->pd = 1;
+
+               if (!access_ok(0, (void const __user *)init->file,
+                               init->filelen))
+                       goto bail;
                if (init->filelen) {
                        VERIFY(err, !fastrpc_mmap_create(fl, init->filefd, 0,
                                init->file, init->filelen, mflags, &file));
                        if (err)
                                goto bail;
                }
+               if (!access_ok(1, (void const __user *)init->mem,
+                               init->memlen))
+                       goto bail;
                inbuf.pageslen = 1;
                VERIFY(err, !fastrpc_mmap_create(fl, init->memfd, 0,
                                init->mem, init->memlen, mflags, &mem));