Re: [PATCH v3 3/8] s390/cio: add basic protected virtualization support

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

 





On 03.06.19 15:42, Cornelia Huck wrote:
On Mon, 3 Jun 2019 14:45:03 +0200
Michael Mueller <mimu@xxxxxxxxxxxxx> wrote:

On 03.06.19 14:06, Cornelia Huck wrote:
On Wed, 29 May 2019 14:26:52 +0200
Michael Mueller <mimu@xxxxxxxxxxxxx> wrote:

@@ -1593,20 +1625,31 @@ struct ccw_device * __init ccw_device_create_console(struct ccw_driver *drv)
   		return ERR_CAST(sch);
io_priv = kzalloc(sizeof(*io_priv), GFP_KERNEL | GFP_DMA);
-	if (!io_priv) {
-		put_device(&sch->dev);
-		return ERR_PTR(-ENOMEM);
-	}
+	if (!io_priv)
+		goto err_priv;
+	io_priv->dma_area = dma_alloc_coherent(&sch->dev,
+				sizeof(*io_priv->dma_area),
+				&io_priv->dma_area_dma, GFP_KERNEL);
+	if (!io_priv->dma_area)
+		goto err_dma_area;
   	set_io_private(sch, io_priv);
   	cdev = io_subchannel_create_ccwdev(sch);
   	if (IS_ERR(cdev)) {
   		put_device(&sch->dev);
+		dma_free_coherent(&sch->dev, sizeof(*io_priv->dma_area),
+				  io_priv->dma_area, io_priv->dma_area_dma);
   		kfree(io_priv);

<pre-existing, not introduced by this patch>
Shouldn't that branch do set_io_private(sch, NULL)? Not sure if any
code would make use of it, but it's probably better to clean out
references to freed objects.

Added behind kfree(). I hope nobody asks for a separate patch. ;)

I would probably have added it just before the kfree, but I'm not
asking for a separate patch ;)

I moved it.



</pre-existing, not introduced by this patch>
   		return cdev;
   	}
   	cdev->drv = drv;
   	ccw_device_set_int_class(cdev);
   	return cdev;
+
+err_dma_area:
+	kfree(io_priv);
+err_priv:
+	put_device(&sch->dev);
+	return ERR_PTR(-ENOMEM);
   }
void __init ccw_device_destroy_console(struct ccw_device *cdev)


_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization



[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux