lkml.org 
[lkml]   [2014]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.17 049/319] UBIFS: fix free log space calculation
    Date
    3.17-stable review patch.  If anyone has any objections, please let me know.

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

    From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>

    commit ba29e721eb2df6df8f33c1f248388bb037a47914 upstream.

    Hu (hujianyang <hujianyang@huawei.com>) discovered an issue in the
    'empty_log_bytes()' function, which calculates how many bytes are left in the
    log:

    "
    If 'c->lhead_lnum + 1 == c->ltail_lnum' and 'c->lhead_offs == c->leb_size', 'h'
    would equalent to 't' and 'empty_log_bytes()' would return 'c->log_bytes'
    instead of 0.
    "

    At this point it is not clear what would be the consequences of this, and
    whether this may lead to any problems, but this patch addresses the issue just
    in case.

    Tested-by: hujianyang <hujianyang@huawei.com>
    Reported-by: hujianyang <hujianyang@huawei.com>
    Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/ubifs/log.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- a/fs/ubifs/log.c
    +++ b/fs/ubifs/log.c
    @@ -106,10 +106,14 @@ static inline long long empty_log_bytes(
    h = (long long)c->lhead_lnum * c->leb_size + c->lhead_offs;
    t = (long long)c->ltail_lnum * c->leb_size;

    - if (h >= t)
    + if (h > t)
    return c->log_bytes - h + t;
    - else
    + else if (h != t)
    return t - h;
    + else if (c->lhead_lnum != c->ltail_lnum)
    + return 0;
    + else
    + return c->log_bytes;
    }

    /**



    \
     
     \ /
      Last update: 2014-11-12 02:41    [W:2.284 / U:0.912 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site