lkml.org 
[lkml]   [2007]   [Aug]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 20/20] JFFS2 locking regression fix.
    -stable review patch.  If anyone has any objections, please let us know.

    ------------------

    Commit a491486a2087ac3dfc00efb4f838c8d684afaf54 introduced a locking
    problem in JFFS2 -- we up() the alloc_sem when we weren't previously
    holding it. This leads to all kinds of fun behaviour later.

    There was a _reason_ for the
    if (1 /* alternative path needs testing */ ||
    which the above-mentioned commit removed :)

    Discovered and debugged by Giulio Fedel <giulio.fedel@andorsystems.com>

    Signed-off-by: David Woodhouse <dwmw2@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/jffs2/write.c | 3 +++
    1 file changed, 3 insertions(+)

    --- a/fs/jffs2/write.c
    +++ b/fs/jffs2/write.c
    @@ -553,6 +553,9 @@ int jffs2_do_unlink(struct jffs2_sb_info
    struct jffs2_full_dirent **prev = &dir_f->dents;
    uint32_t nhash = full_name_hash(name, namelen);

    + /* We don't actually want to reserve any space, but we do
    + want to be holding the alloc_sem when we write to flash */
    + down(&c->alloc_sem);
    down(&dir_f->sem);

    while ((*prev) && (*prev)->nhash <= nhash) {
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-08-21 09:03    [W:0.022 / U:30.580 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site