diff options
Diffstat (limited to 'mm/slab.c')
| -rw-r--r-- | mm/slab.c | 23 |
1 files changed, 10 insertions, 13 deletions
| @@ -1584,11 +1584,8 @@ static void print_objinfo(struct kmem_cache *cachep, void *objp, int lines) | |||
| 1584 | *dbg_redzone2(cachep, objp)); | 1584 | *dbg_redzone2(cachep, objp)); |
| 1585 | } | 1585 | } |
| 1586 | 1586 | ||
| 1587 | if (cachep->flags & SLAB_STORE_USER) { | 1587 | if (cachep->flags & SLAB_STORE_USER) |
| 1588 | pr_err("Last user: [<%p>](%pSR)\n", | 1588 | pr_err("Last user: (%pSR)\n", *dbg_userword(cachep, objp)); |
| 1589 | *dbg_userword(cachep, objp), | ||
| 1590 | *dbg_userword(cachep, objp)); | ||
| 1591 | } | ||
| 1592 | realobj = (char *)objp + obj_offset(cachep); | 1589 | realobj = (char *)objp + obj_offset(cachep); |
| 1593 | size = cachep->object_size; | 1590 | size = cachep->object_size; |
| 1594 | for (i = 0; i < size && lines; i += 16, lines--) { | 1591 | for (i = 0; i < size && lines; i += 16, lines--) { |
| @@ -1621,7 +1618,7 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp) | |||
| 1621 | /* Mismatch ! */ | 1618 | /* Mismatch ! */ |
| 1622 | /* Print header */ | 1619 | /* Print header */ |
| 1623 | if (lines == 0) { | 1620 | if (lines == 0) { |
| 1624 | pr_err("Slab corruption (%s): %s start=%p, len=%d\n", | 1621 | pr_err("Slab corruption (%s): %s start=%px, len=%d\n", |
| 1625 | print_tainted(), cachep->name, | 1622 | print_tainted(), cachep->name, |
| 1626 | realobj, size); | 1623 | realobj, size); |
| 1627 | print_objinfo(cachep, objp, 0); | 1624 | print_objinfo(cachep, objp, 0); |
| @@ -1650,13 +1647,13 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp) | |||
| 1650 | if (objnr) { | 1647 | if (objnr) { |
| 1651 | objp = index_to_obj(cachep, page, objnr - 1); | 1648 | objp = index_to_obj(cachep, page, objnr - 1); |
| 1652 | realobj = (char *)objp + obj_offset(cachep); | 1649 | realobj = (char *)objp + obj_offset(cachep); |
| 1653 | pr_err("Prev obj: start=%p, len=%d\n", realobj, size); | 1650 | pr_err("Prev obj: start=%px, len=%d\n", realobj, size); |
| 1654 | print_objinfo(cachep, objp, 2); | 1651 | print_objinfo(cachep, objp, 2); |
| 1655 | } | 1652 | } |
| 1656 | if (objnr + 1 < cachep->num) { | 1653 | if (objnr + 1 < cachep->num) { |
| 1657 | objp = index_to_obj(cachep, page, objnr + 1); | 1654 | objp = index_to_obj(cachep, page, objnr + 1); |
| 1658 | realobj = (char *)objp + obj_offset(cachep); | 1655 | realobj = (char *)objp + obj_offset(cachep); |
| 1659 | pr_err("Next obj: start=%p, len=%d\n", realobj, size); | 1656 | pr_err("Next obj: start=%px, len=%d\n", realobj, size); |
| 1660 | print_objinfo(cachep, objp, 2); | 1657 | print_objinfo(cachep, objp, 2); |
| 1661 | } | 1658 | } |
| 1662 | } | 1659 | } |
| @@ -2608,7 +2605,7 @@ static void slab_put_obj(struct kmem_cache *cachep, | |||
| 2608 | /* Verify double free bug */ | 2605 | /* Verify double free bug */ |
| 2609 | for (i = page->active; i < cachep->num; i++) { | 2606 | for (i = page->active; i < cachep->num; i++) { |
| 2610 | if (get_free_obj(page, i) == objnr) { | 2607 | if (get_free_obj(page, i) == objnr) { |
| 2611 | pr_err("slab: double free detected in cache '%s', objp %p\n", | 2608 | pr_err("slab: double free detected in cache '%s', objp %px\n", |
| 2612 | cachep->name, objp); | 2609 | cachep->name, objp); |
| 2613 | BUG(); | 2610 | BUG(); |
| 2614 | } | 2611 | } |
| @@ -2772,7 +2769,7 @@ static inline void verify_redzone_free(struct kmem_cache *cache, void *obj) | |||
| 2772 | else | 2769 | else |
| 2773 | slab_error(cache, "memory outside object was overwritten"); | 2770 | slab_error(cache, "memory outside object was overwritten"); |
| 2774 | 2771 | ||
| 2775 | pr_err("%p: redzone 1:0x%llx, redzone 2:0x%llx\n", | 2772 | pr_err("%px: redzone 1:0x%llx, redzone 2:0x%llx\n", |
| 2776 | obj, redzone1, redzone2); | 2773 | obj, redzone1, redzone2); |
| 2777 | } | 2774 | } |
| 2778 | 2775 | ||
| @@ -3078,7 +3075,7 @@ static void *cache_alloc_debugcheck_after(struct kmem_cache *cachep, | |||
| 3078 | if (*dbg_redzone1(cachep, objp) != RED_INACTIVE || | 3075 | if (*dbg_redzone1(cachep, objp) != RED_INACTIVE || |
| 3079 | *dbg_redzone2(cachep, objp) != RED_INACTIVE) { | 3076 | *dbg_redzone2(cachep, objp) != RED_INACTIVE) { |
| 3080 | slab_error(cachep, "double free, or memory outside object was overwritten"); | 3077 | slab_error(cachep, "double free, or memory outside object was overwritten"); |
| 3081 | pr_err("%p: redzone 1:0x%llx, redzone 2:0x%llx\n", | 3078 | pr_err("%px: redzone 1:0x%llx, redzone 2:0x%llx\n", |
| 3082 | objp, *dbg_redzone1(cachep, objp), | 3079 | objp, *dbg_redzone1(cachep, objp), |
| 3083 | *dbg_redzone2(cachep, objp)); | 3080 | *dbg_redzone2(cachep, objp)); |
| 3084 | } | 3081 | } |
| @@ -3091,7 +3088,7 @@ static void *cache_alloc_debugcheck_after(struct kmem_cache *cachep, | |||
| 3091 | cachep->ctor(objp); | 3088 | cachep->ctor(objp); |
| 3092 | if (ARCH_SLAB_MINALIGN && | 3089 | if (ARCH_SLAB_MINALIGN && |
| 3093 | ((unsigned long)objp & (ARCH_SLAB_MINALIGN-1))) { | 3090 | ((unsigned long)objp & (ARCH_SLAB_MINALIGN-1))) { |
| 3094 | pr_err("0x%p: not aligned to ARCH_SLAB_MINALIGN=%d\n", | 3091 | pr_err("0x%px: not aligned to ARCH_SLAB_MINALIGN=%d\n", |
| 3095 | objp, (int)ARCH_SLAB_MINALIGN); | 3092 | objp, (int)ARCH_SLAB_MINALIGN); |
| 3096 | } | 3093 | } |
| 3097 | return objp; | 3094 | return objp; |
| @@ -4283,7 +4280,7 @@ static void show_symbol(struct seq_file *m, unsigned long address) | |||
| 4283 | return; | 4280 | return; |
| 4284 | } | 4281 | } |
| 4285 | #endif | 4282 | #endif |
| 4286 | seq_printf(m, "%p", (void *)address); | 4283 | seq_printf(m, "%px", (void *)address); |
| 4287 | } | 4284 | } |
| 4288 | 4285 | ||
| 4289 | static int leaks_show(struct seq_file *m, void *p) | 4286 | static int leaks_show(struct seq_file *m, void *p) |
