Re: [PATCH] libata: fix probe_ent alloc/free bugs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello.

Tejun Heo wrote:
ata_probe_ent_alloc() had a temporary hack such that devm_kzalloc()
was used for allocation if devres had been previously initialized on
the device; otherwise, plain kzalloc() was used.  This was to make the
code useable from both the old and devres-aware libata drivers during
transition.  This hack made ata_sas_port_alloc() unable to determine
how the probe_ent is allocated, causing double free in some cases.

Remove the now-unneeded hack and make ata_sas_port_alloc() use
devm_kfree().

[...]

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 2cf8251..c34e0b4 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -5891,11 +5891,7 @@ ata_probe_ent_alloc(struct device *dev, const struct ata_port_info *port)
{
    struct ata_probe_ent *probe_ent;

-    /* XXX - the following if can go away once all LLDs are managed */
-    if (!list_empty(&dev->devres_head))
-        probe_ent = devm_kzalloc(dev, sizeof(*probe_ent), GFP_KERNEL);
-    else
-        probe_ent = kzalloc(sizeof(*probe_ent), GFP_KERNEL);
+    probe_ent = devm_kzalloc(dev, sizeof(*probe_ent), GFP_KERNEL);
    if (!probe_ent) {
        printk(KERN_ERR DRV_NAME "(%s): out of memory\n",
               kobject_name(&(dev->kobj)));
[...]

   The patch certainly looks mangled tab-wise. :-)

MBR, Sergei
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux