Re: [Bug #13112] Oops in drain_array

David Rientjes
2009-04-27T20:36:46Z

On Mon, 27 Apr 2009, Bart wrote:

> After turning the suggested debuging options I've got tons of these when
> trying to stress the tape device like before:
>
> Apr 27 16:57:30 fs kernel: [ 96.446708] slab error in verify_redzone_free():
> cache `size-128': memory outside object was overwritten
> Apr 27 16:57:30 fs kernel: [ 96.446713] Pid: 0, comm: swapper Not tainted
> 2.6.29.1-64 #2
> Apr 27 16:57:30 fs kernel: [ 96.446715] Call Trace:
> Apr 27 16:57:30 fs kernel: [ 96.446717] <IRQ> [<ffffffff8029adc5>]
> __slab_error+0x1f/0x25
> Apr 27 16:57:30 fs kernel: [ 96.446728] [<ffffffff8029b24b>]
> cache_free_debugcheck+0x108/0x1d6
> Apr 27 16:57:30 fs kernel: [ 96.446731] [<ffffffff8029b473>]
> kfree+0x81/0xc2
> Apr 27 16:57:30 fs kernel: [ 96.446735] [<ffffffff802bd311>]
> bio_free_map_data+0xc/0x1e

This appears to be kfree(bmd->iovecs) in bio_free_map_data(). It looks
like the memcpy size in bio_set_map_data() overrides the kmalloc size; in
other words, for a redzone error, bio->bi_vcnt > nr_pages in
bio_copy_user_iov().