lkml.org 
[lkml]   [2008]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 05/71] drivers/mmc/card/block.c: fix refcount leak in mmc_block_open()
    2.6.26-stable review patch.  If anyone has any objections, please let us
    know.

    ------------------
    From: Andrew Morton <akpm@linux-foundation.org>

    commit 70bb08962ea9bd50797ae9f16b2493f5f7c65053 upstream

    mmc_block_open() increments md->usage although it returns with -EROFS when
    default mounting a MMC/SD card with write protect switch on. This
    reference counting bug prevents /dev/mmcblkX from being released on card
    removal, and situation worsen with reinsertion until the minor number
    range runs out.

    Reported-by: <sasin@solomon-systech.com>
    Acked-by: Pierre Ossman <drzeus-list@drzeus.cx>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/mmc/card/block.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/drivers/mmc/card/block.c
    +++ b/drivers/mmc/card/block.c
    @@ -103,8 +103,10 @@ static int mmc_blk_open(struct inode *in
    check_disk_change(inode->i_bdev);
    ret = 0;

    - if ((filp->f_mode & FMODE_WRITE) && md->read_only)
    + if ((filp->f_mode & FMODE_WRITE) && md->read_only) {
    + mmc_blk_put(md);
    ret = -EROFS;
    + }
    }

    return ret;
    --


    \
     
     \ /
      Last update: 2008-10-07 02:45    [W:0.022 / U:29.096 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site