On 8/31/05, Pekka Enberg <[email protected]> wrote:
> After finally understanding what you're doing, how about:
>
> static inline int hint_allocate(struct inode *dir)
> {
> loff_t *hints;
> int err = 0;
>
> if (!MSDOS_I(dir)->scan_hints)
Should read:
if (MSDOS_I(dir)->scan_hints)
> return 0;
>
> hints = kcalloc(FAT_SCAN_NWAY, sizeof(loff_t), GFP_KERNEL);
> if (!hints)
> err = -ENOMEM;
>
> down(&MSDOS_I(dir)->scan_lock);
> /*
> * We allocated memory without scan_lock so lets make sure
> * no other thread completed hint_allocate() before us.
> */
> if (!MSDOS_I(dir)->scan_hints) {
> MSDOS_I(dir)->scan_hints = hints;
> hints = NULL;
> }
> up(&MSDOS_I(dir)->scan_lock);
>
> kfree(hints);
> return err;
> }
>
> Pekka
>
-
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]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|