Commit 9b6d90e2 authored by Zhou Qingyang's avatar Zhou Qingyang Committed by Damien Le Moal

ata: pata_platform: Fix a NULL pointer dereference in __pata_platform_probe()

In __pata_platform_probe(), devm_kzalloc() is assigned to ap->ops and
there is a dereference of it right after that, which could introduce a
NULL pointer dereference bug.

Fix this by adding a NULL check of ap->ops.

This bug was found by a static analyzer.

Builds with 'make allyesconfig' show no new warnings,
and our static analyzer no longer warns about this code.

Fixes: f3d5e4f1 ("ata: pata_of_platform: Allow to use 16-bit wide data transfer")
Signed-off-by: default avatarZhou Qingyang <zhou1615@umn.edu>
Signed-off-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
parent 0280e3c5
...@@ -128,6 +128,8 @@ int __pata_platform_probe(struct device *dev, struct resource *io_res, ...@@ -128,6 +128,8 @@ int __pata_platform_probe(struct device *dev, struct resource *io_res,
ap = host->ports[0]; ap = host->ports[0];
ap->ops = devm_kzalloc(dev, sizeof(*ap->ops), GFP_KERNEL); ap->ops = devm_kzalloc(dev, sizeof(*ap->ops), GFP_KERNEL);
if (!ap->ops)
return -ENOMEM;
ap->ops->inherits = &ata_sff_port_ops; ap->ops->inherits = &ata_sff_port_ops;
ap->ops->cable_detect = ata_cable_unknown; ap->ops->cable_detect = ata_cable_unknown;
ap->ops->set_mode = pata_platform_set_mode; ap->ops->set_mode = pata_platform_set_mode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment