Re: [bug] SCSI/SLUB - latest -git: WARNING: at mm/slub.c:2443 kmem_cache_destroy, scsi_put_host_cmd_pool()

James Bottomley
2008-04-22T13:40:06Z

On Tue, 2008-04-22 at 15:10 +0200, Ingo Molnar wrote:
> * James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
>
> > Thanks ... it looks like we may have trouble from devices that alter
> > the unchecked isa dma flag after scsi_host_alloc. The guilty parties
> > appear to be gdth, eata, u14-34f, ultrastor, BusLogic and advansys.
> >
> > The trouble is that if you alloc the host with it one way and free it
> > with it the other, the wrong freelist is used and the ref counts are
> > invalid.
> >
> > Try this pseudo fix: it avoids allocating the freelist until add time
> > (by which time they should all have fixed the flag). It still doesn't
> > change the fact that the host is allocated in the wrong region, but
> > that shouldn't matter too much.
>
> ok - do you intend to push this pseudo-fix upstream? If yes then please
> consider it fixed as far as i'm concerned - i'll re-reply if the warning
> resurfaces (it wasnt lethal to the bootup otherwise). Or if you've got
> some other approach/fix then i can test that too.

It's certainly the line of least resistance. The more correct fix would
be to haul unchecked_isa_dma out of the host and make everything use the
template, so it becomes immutable (as it should be). However, that's a
lot of work and given that Andi's gunning for unchecked_isa_dma anyway,
probably not worth it.

So, unless I think of something better in the next few days, this is the
way I'll fix it.

James