question about CVE-2022-3169

Chaitanya Kulkarni chaitanyak at nvidia.com
Thu Nov 10 17:37:55 PST 2022


Lian,

On 11/10/22 02:23, linan (AK) wrote:
> Hi,
> 1e866afd4bcd("nvme: ensure subsystem reset is single threaded")
> fixed CVE-2022-3169.
> 
> IIUC, ERROR path I got in this CVE:
>             CPU1                                CPU2
> nvme_dev_ioctl                            nvme_dev_ioctl
>    nvme_reset_ctrl_sync                      nvme_reset_subsystem
>        reset_work
>          nvme_reset_work
>            nvme_setup_io_queues
>              nvme_remap_bar(dev, size)
>                if (size <= dev->bar_mapped_size)
>                  return 0;
>                iounmap
>                                                reg_write32   //error
>                ioremap
> 
> In nvme_remap_bar(), the premise of ioremap is "size > 
> dev->bar_mapped_size".
>    size = NVME_REG_DBS + ((nr_io_queues + 1) * 8 * dev->db_stride);
>      1)nr_io_queue = dev->nr_allocated_queues - 1, Onece set to
> "nvme_max_io_queues(dev) + 1" during probe time, it could not change.
>      2)db_stride is doorbell stride, it didn't change during my test
> Therefore, I cant find a way to make iounmap happen.
> 
> Could you tell me how you trigger the ERROR?
> 
> Thanks,
> Nan.
> 

Do you have a script to reproduce this ?

-ck



More information about the Linux-nvme mailing list