lkml.org 
[lkml]   [2011]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/10] Avoid dereferencing bd_disk during swap_entry_free for network storage
    Date
    Commit [b3a27d: swap: Add swap slot free callback to
    block_device_operations] dereferences p->bdev->bd_disk but this is a
    NULL dereference if using swap-over-NFS. This patch checks SWP_BLKDEV
    on the swap_info_struct before dereferencing.

    Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
    Signed-off-by: Mel Gorman <mgorman@suse.de>
    ---
    mm/swapfile.c | 9 +++++----
    1 files changed, 5 insertions(+), 4 deletions(-)

    diff --git a/mm/swapfile.c b/mm/swapfile.c
    index 806b994..8b85a88 100644
    --- a/mm/swapfile.c
    +++ b/mm/swapfile.c
    @@ -547,7 +547,6 @@ static unsigned char swap_entry_free(struct swap_info_struct *p,

    /* free if no reference */
    if (!usage) {
    - struct gendisk *disk = p->bdev->bd_disk;
    if (offset < p->lowest_bit)
    p->lowest_bit = offset;
    if (offset > p->highest_bit)
    @@ -557,9 +556,11 @@ static unsigned char swap_entry_free(struct swap_info_struct *p,
    swap_list.next = p->type;
    nr_swap_pages++;
    p->inuse_pages--;
    - if ((p->flags & SWP_BLKDEV) &&
    - disk->fops->swap_slot_free_notify)
    - disk->fops->swap_slot_free_notify(p->bdev, offset);
    + if (p->flags & SWP_BLKDEV) {
    + struct gendisk *disk = p->bdev->bd_disk;
    + if (disk->fops->swap_slot_free_notify)
    + disk->fops->swap_slot_free_notify(p->bdev, offset);
    + }
    }

    return usage;
    --
    1.7.3.4


    \
     
     \ /
      Last update: 2011-09-09 13:05    [W:0.027 / U:11.592 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site