Re: [BUG 2.6.17-git] kmem_cache_create: duplicate cache scsi_cmd_cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Fri, 12 May 2006, Russell King wrote:
> 
> From: Todd Blumer <[email protected]>
> On a PXA27x handheld (iPAQ hx4700), when we eject a mounted SD memory
> card, we get a kernel panic (kernel trying to clean up non-existent
> device). One hack patch to avoid the panic is:
> 
> --- fs/partitions/check.c       10 Apr 2006 22:57:27 -0000      1.15
> +++ fs/partitions/check.c       4 May 2006 20:30:15 -0000
> @@ -491,6 +491,7 @@
>                         kfree(disk_name);
>                 }
>                 put_device(disk->driverfs_dev);
> +               disk->driverfs_dev = 0; /* HACK - what's the right solution? */
>         }
>         kobject_uevent(&disk->kobj, KOBJ_REMOVE);
>         kobject_del(&disk->kobj);

Btw, on the face it of, I really think that this patch is correct 
regardless of any other issues.

We're clearly getting rid of "disk->driverfs_dev" (that's what the 
"put_device()" does). So we should clear it out - using 
"disk->driverfs_dev" afterwards is clearly not _valid_, because we've 
dropped the reference.

Of course, we shouldn't assign zero to it. We should assign NULL. 
Alternatively, we could poison it (so that anybody who tries to use it 
gets a nice oops ASAP).

Now, regardless of whether that is correct or not, it might not be the 
only problem, of course. It sounds like there is something else going on 
here too.

			Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux