unsigned long size, unsigned long grow)
 {
        struct mm_struct *mm = vma->vm_mm;
-       struct rlimit *rlim = current->signal->rlim;
        unsigned long new_start;
 
        /* address space limit tests */
                return -ENOMEM;
 
        /* Stack limit test */
-       if (size > READ_ONCE(rlim[RLIMIT_STACK].rlim_cur))
+       if (size > rlimit(RLIMIT_STACK))
                return -ENOMEM;
 
        /* mlock limit tests */
                unsigned long locked;
                unsigned long limit;
                locked = mm->locked_vm + grow;
-               limit = READ_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
+               limit = rlimit(RLIMIT_MEMLOCK);
                limit >>= PAGE_SHIFT;
                if (locked > limit && !capable(CAP_IPC_LOCK))
                        return -ENOMEM;