lkml.org 
[lkml]   [2020]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH] nvme: fix use-after-free during booting
    Thank you Christoph.
    I will do some testing with my setup and let you know.
    - Tong

    On Tue, Sep 22, 2020 at 9:59 AM Christoph Hellwig <hch@lst.de> wrote:
    >
    > Hi Tong,
    >
    > can you test this patch?
    >
    > diff --git a/block/genhd.c b/block/genhd.c
    > index 99c64641c3148c..6473ae703789e4 100644
    > --- a/block/genhd.c
    > +++ b/block/genhd.c
    > @@ -836,6 +836,7 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk,
    > * so that it sticks around as long as @disk is there.
    > */
    > WARN_ON_ONCE(!blk_get_queue(disk->queue));
    > + disk->flags |= GENHD_FL_QUEUE_REF;
    >
    > disk_add_events(disk);
    > blk_integrity_add(disk);
    > @@ -1567,7 +1568,7 @@ static void disk_release(struct device *dev)
    > kfree(disk->random);
    > disk_replace_part_tbl(disk, NULL);
    > hd_free_part(&disk->part0);
    > - if (disk->queue)
    > + if (disk->flags & GENHD_FL_QUEUE_REF)
    > blk_put_queue(disk->queue);
    > kfree(disk);
    > }
    > diff --git a/include/linux/genhd.h b/include/linux/genhd.h
    > index 4ab853461dff25..9441077ee10329 100644
    > --- a/include/linux/genhd.h
    > +++ b/include/linux/genhd.h
    > @@ -135,6 +135,7 @@ struct hd_struct {
    > #define GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE 0x0100
    > #define GENHD_FL_NO_PART_SCAN 0x0200
    > #define GENHD_FL_HIDDEN 0x0400
    > +#define GENHD_FL_QUEUE_REF 0x0800
    >
    > enum {
    > DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */

    \
     
     \ /
      Last update: 2020-09-22 17:41    [W:3.315 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site