u8 *start;
        u8 *fault;
        u8 *end;
+       u8 *pad;
        int length;
        int remainder;
 
        if (!remainder)
                return 1;
 
+       pad = end - remainder;
        metadata_access_enable();
-       fault = memchr_inv(end - remainder, POISON_INUSE, remainder);
+       fault = memchr_inv(pad, POISON_INUSE, remainder);
        metadata_access_disable();
        if (!fault)
                return 1;
                end--;
 
        slab_err(s, page, "Padding overwritten. 0x%p-0x%p", fault, end - 1);
-       print_section(KERN_ERR, "Padding ", end - remainder, remainder);
+       print_section(KERN_ERR, "Padding ", pad, remainder);
 
-       restore_bytes(s, "slab padding", POISON_INUSE, end - remainder, end);
+       restore_bytes(s, "slab padding", POISON_INUSE, fault, end);
        return 0;
 }