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

Michael Mueller
2019-06-03T13:53:08Z

On 03.06.19 15:42, Cornelia Huck wrote:
> On Mon, 3 Jun 2019 14:45:03 +0200
> Michael Mueller <mimu@linux.ibm.com> wrote:
>
>> On 03.06.19 14:06, Cornelia Huck wrote:
>>> On Wed, 29 May 2019 14:26:52 +0200
>>> Michael Mueller <mimu@linux.ibm.com> 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)
>