lkml.org 
[lkml]   [2013]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 084/133] s390/bitops: fix find_next_bit_left
    Date
    3.8.13.7 -stable review patch.  If anyone has any objections, please let me know.

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

    From: Martin Schwidefsky <schwidefsky@de.ibm.com>

    commit 3b0040a47ad63f7147e9e7d2febb61a3b564bb90 upstream.

    The find_next_bit_left function is broken if used with an offset which
    is not a multiple of 64. The shift to mask the bits of a 64-bit word
    not to search is in the wrong direction, the result can be either a
    bit found smaller than the offset or failure to find a set bit.

    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    arch/s390/include/asm/bitops.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/s390/include/asm/bitops.h b/arch/s390/include/asm/bitops.h
    index 1542293..787eb3b 100644
    --- a/arch/s390/include/asm/bitops.h
    +++ b/arch/s390/include/asm/bitops.h
    @@ -698,7 +698,7 @@ static inline int find_next_bit_left(const unsigned long *addr,
    size -= offset;
    p = addr + offset / __BITOPS_WORDSIZE;
    if (bit) {
    - set = __flo_word(0, *p & (~0UL << bit));
    + set = __flo_word(0, *p & (~0UL >> bit));
    if (set >= size)
    return size + offset;
    if (set < __BITOPS_WORDSIZE)
    --
    1.8.1.2


    \
     
     \ /
      Last update: 2013-08-17 09:21    [W:4.258 / U:0.364 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site