lkml.org 
[lkml]   [2022]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 198/237] ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
    Date
    From: Sergey Shtylyov <s.shtylyov@omp.ru>

    [ Upstream commit bf476fe22aa1851bab4728e0c49025a6a0bea307 ]

    In an unlikely (and probably wrong?) case that the 'ppi' parameter of
    ata_host_alloc_pinfo() points to an array starting with a NULL pointer,
    there's going to be a kernel oops as the 'pi' local variable won't get
    reassigned from the initial value of NULL. Initialize 'pi' instead to
    '&ata_dummy_port_info' to fix the possible kernel oops for good...

    Found by Linux Verification Center (linuxtesting.org) with the SVACE static
    analysis tool.

    Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/ata/libata-core.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
    index d3a7b3bb5043..08dc37a62f5a 100644
    --- a/drivers/ata/libata-core.c
    +++ b/drivers/ata/libata-core.c
    @@ -6180,7 +6180,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
    const struct ata_port_info * const * ppi,
    int n_ports)
    {
    - const struct ata_port_info *pi;
    + const struct ata_port_info *pi = &ata_dummy_port_info;
    struct ata_host *host;
    int i, j;

    @@ -6188,7 +6188,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
    if (!host)
    return NULL;

    - for (i = 0, j = 0, pi = NULL; i < host->n_ports; i++) {
    + for (i = 0, j = 0; i < host->n_ports; i++) {
    struct ata_port *ap = host->ports[i];

    if (ppi[j])
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-23 19:43    [W:2.794 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site