Showing error 1736

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/misc/sgi-gru/grufault.c
Line in file: 632
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

602        if (copy_from_user(&req, (void __user *)arg, sizeof(req)))
603                return -EFAULT;
604
605        gru_dbg(grudev, "gseg 0x%lx, vaddr 0x%lx, len 0x%lx\n", req.gseg,
606                req.vaddr, req.len);
607
608        gts = gru_find_lock_gts(req.gseg);
609        if (!gts)
610                return -EINVAL;
611
612        gru_flush_tlb_range(gts->ts_gms, req.vaddr, req.vaddr + req.len);
613        gru_unlock_gts(gts);
614
615        return 0;
616}
617
618/*
619 * Register the current task as the user of the GSEG slice.
620 * Needed for TLB fault interrupt targeting.
621 */
622int gru_set_task_slice(long address)
623{
624        struct gru_thread_state *gts;
625
626        STAT(set_task_slice);
627        gru_dbg(grudev, "address 0x%lx\n", address);
628        gts = gru_alloc_locked_gts(address);
629        if (!gts)
630                return -EINVAL;
631
632        gts->ts_tgid_owner = current->tgid;
633        gru_unlock_gts(gts);
634
635        return 0;
636}
Show full sources