> No, so have to unlock it also, if you return -ENOSPC.
>
> So the correct fix seems to be:
>
> --- linux/fs/ramfs/inode.c~ Wed Jan 31 22:02:16 2001
> +++ linux/fs/ramfs/inode.c Fri Feb 2 14:51:47 2001
> @@ -174,7 +174,6 @@
> inode->i_blocks += IBLOCKS_PER_PAGE;
> rsb->free_pages--;
> SetPageDirty(page);
> - UnlockPage(page);
> } else {
> ClearPageUptodate(page);
> ret = 0;
> @@ -264,6 +263,9 @@
>
> - if (! ramfs_alloc_page(inode, page))
> + if (! ramfs_alloc_page(inode, page)) {
> + UnlockPage(page);
> return -ENOSPC;
> + }
> + UnlockPage(page);
> return 0;
> }
>
> This currently works for me (but using 2.4.0 + dwg-ramfs.patch + this patch)
Have you stressed it? (I see leakiness)
-Mike
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/