From: Francisco Jerez <currojerez@riseup.net>
To: Dan Carpenter <error27@gmail.com>
Cc: nouveau@lists.freedesktop.org,
devicetree-discuss@lists.ozlabs.org,
kernel-janitors@vger.kernel.org, dri-devel@lists.freedesktop.org,
Grant Likely <grant.likely@secretlab.ca>,
Dave Airlie <airlied@redhat.com>, Ben Skeggs <bskeggs@redhat.com>
Subject: Re: [patch v2] nouveau: unwind on load errors
Date: Thu, 05 Aug 2010 00:27:11 +0000 [thread overview]
Message-ID: <87y6clhpk0.fsf@riseup.net> (raw)
In-Reply-To: <20100730202000.GA4194@joi.lan> (Marcin Slusarz's message of "Fri, 30 Jul 2010 22:20:00 +0200")
[-- Attachment #1.1: Type: text/plain, Size: 3900 bytes --]
Marcin Slusarz <marcin.slusarz@gmail.com> writes:
> On Fri, Jul 30, 2010 at 05:04:32PM +0200, Dan Carpenter wrote:
>> nuveau_load() just returned directly if there was an error instead of
> ^^^^^^ typo
>
>> releasing resources.
>>
>> Signed-off-by: Dan Carpenter <error27@gmail.com>
>> ---
>> V2: updated to the nouveau git tree.
>
> Thanks.
> Reviewed-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Thanks, pushed to the nouveau kernel tree.
>
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
>> index ee3729e..cf16bfb 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_state.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_state.c
>> @@ -739,8 +739,10 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> int ret;
>>
>> dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
>> - if (!dev_priv)
>> - return -ENOMEM;
>> + if (!dev_priv) {
>> + ret = -ENOMEM;
>> + goto err_out;
>> + }
>> dev->dev_private = dev_priv;
>> dev_priv->dev = dev;
>>
>> @@ -750,8 +752,10 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> dev->pci_vendor, dev->pci_device, dev->pdev->class);
>>
>> dev_priv->wq = create_workqueue("nouveau");
>> - if (!dev_priv->wq)
>> - return -EINVAL;
>> + if (!dev_priv->wq) {
>> + ret = -EINVAL;
>> + goto err_priv;
>> + }
>>
>> /* resource 0 is mmio regs */
>> /* resource 1 is linear FB */
>> @@ -764,7 +768,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> if (!dev_priv->mmio) {
>> NV_ERROR(dev, "Unable to initialize the mmio mapping. "
>> "Please report your setup to " DRIVER_EMAIL "\n");
>> - return -EINVAL;
>> + ret = -EINVAL;
>> + goto err_wq;
>> }
>> NV_DEBUG(dev, "regs mapped ok at 0x%llx\n",
>> (unsigned long long)mmio_start_offs);
>> @@ -812,7 +817,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> break;
>> default:
>> NV_INFO(dev, "Unsupported chipset 0x%08x\n", reg0);
>> - return -EINVAL;
>> + ret = -EINVAL;
>> + goto err_mmio;
>> }
>>
>> NV_INFO(dev, "Detected an NV%2x generation card (0x%08x)\n",
>> @@ -820,7 +826,7 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>>
>> ret = nouveau_remove_conflicting_drivers(dev);
>> if (ret)
>> - return ret;
>> + goto err_mmio;
>>
>> /* Map PRAMIN BAR, or on older cards, the aperture withing BAR0 */
>> if (dev_priv->card_type >= NV_40) {
>> @@ -834,7 +840,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> dev_priv->ramin_size);
>> if (!dev_priv->ramin) {
>> NV_ERROR(dev, "Failed to PRAMIN BAR");
>> - return -ENOMEM;
>> + ret = -ENOMEM;
>> + goto err_mmio;
>> }
>> } else {
>> dev_priv->ramin_size = 1 * 1024 * 1024;
>> @@ -842,7 +849,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> dev_priv->ramin_size);
>> if (!dev_priv->ramin) {
>> NV_ERROR(dev, "Failed to map BAR0 PRAMIN.\n");
>> - return -ENOMEM;
>> + ret = -ENOMEM;
>> + goto err_mmio;
>> }
>> }
>>
>> @@ -857,9 +865,21 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> /* For kernel modesetting, init card now and bring up fbcon */
>> ret = nouveau_card_init(dev);
>> if (ret)
>> - return ret;
>> + goto err_ramin;
>>
>> return 0;
>> +
>> +err_ramin:
>> + iounmap(dev_priv->ramin);
>> +err_mmio:
>> + iounmap(dev_priv->mmio);
>> +err_wq:
>> + destroy_workqueue(dev_priv->wq);
>> +err_priv:
>> + kfree(dev_priv);
>> + dev->dev_private = NULL;
>> +err_out:
>> + return ret;
>> }
>>
>> void nouveau_lastclose(struct drm_device *dev)
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Francisco Jerez <currojerez@riseup.net>
To: Dan Carpenter <error27@gmail.com>
Cc: nouveau@lists.freedesktop.org,
devicetree-discuss@lists.ozlabs.org,
kernel-janitors@vger.kernel.org, dri-devel@lists.freedesktop.org,
Grant Likely <grant.likely@secretlab.ca>,
Dave Airlie <airlied@redhat.com>, Ben Skeggs <bskeggs@redhat.com>
Subject: Re: [patch v2] nouveau: unwind on load errors
Date: Thu, 05 Aug 2010 02:27:11 +0200 [thread overview]
Message-ID: <87y6clhpk0.fsf@riseup.net> (raw)
In-Reply-To: <20100730202000.GA4194@joi.lan> (Marcin Slusarz's message of "Fri, 30 Jul 2010 22:20:00 +0200")
[-- Attachment #1.1.1: Type: text/plain, Size: 3900 bytes --]
Marcin Slusarz <marcin.slusarz@gmail.com> writes:
> On Fri, Jul 30, 2010 at 05:04:32PM +0200, Dan Carpenter wrote:
>> nuveau_load() just returned directly if there was an error instead of
> ^^^^^^ typo
>
>> releasing resources.
>>
>> Signed-off-by: Dan Carpenter <error27@gmail.com>
>> ---
>> V2: updated to the nouveau git tree.
>
> Thanks.
> Reviewed-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Thanks, pushed to the nouveau kernel tree.
>
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
>> index ee3729e..cf16bfb 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_state.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_state.c
>> @@ -739,8 +739,10 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> int ret;
>>
>> dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
>> - if (!dev_priv)
>> - return -ENOMEM;
>> + if (!dev_priv) {
>> + ret = -ENOMEM;
>> + goto err_out;
>> + }
>> dev->dev_private = dev_priv;
>> dev_priv->dev = dev;
>>
>> @@ -750,8 +752,10 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> dev->pci_vendor, dev->pci_device, dev->pdev->class);
>>
>> dev_priv->wq = create_workqueue("nouveau");
>> - if (!dev_priv->wq)
>> - return -EINVAL;
>> + if (!dev_priv->wq) {
>> + ret = -EINVAL;
>> + goto err_priv;
>> + }
>>
>> /* resource 0 is mmio regs */
>> /* resource 1 is linear FB */
>> @@ -764,7 +768,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> if (!dev_priv->mmio) {
>> NV_ERROR(dev, "Unable to initialize the mmio mapping. "
>> "Please report your setup to " DRIVER_EMAIL "\n");
>> - return -EINVAL;
>> + ret = -EINVAL;
>> + goto err_wq;
>> }
>> NV_DEBUG(dev, "regs mapped ok at 0x%llx\n",
>> (unsigned long long)mmio_start_offs);
>> @@ -812,7 +817,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> break;
>> default:
>> NV_INFO(dev, "Unsupported chipset 0x%08x\n", reg0);
>> - return -EINVAL;
>> + ret = -EINVAL;
>> + goto err_mmio;
>> }
>>
>> NV_INFO(dev, "Detected an NV%2x generation card (0x%08x)\n",
>> @@ -820,7 +826,7 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>>
>> ret = nouveau_remove_conflicting_drivers(dev);
>> if (ret)
>> - return ret;
>> + goto err_mmio;
>>
>> /* Map PRAMIN BAR, or on older cards, the aperture withing BAR0 */
>> if (dev_priv->card_type >= NV_40) {
>> @@ -834,7 +840,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> dev_priv->ramin_size);
>> if (!dev_priv->ramin) {
>> NV_ERROR(dev, "Failed to PRAMIN BAR");
>> - return -ENOMEM;
>> + ret = -ENOMEM;
>> + goto err_mmio;
>> }
>> } else {
>> dev_priv->ramin_size = 1 * 1024 * 1024;
>> @@ -842,7 +849,8 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> dev_priv->ramin_size);
>> if (!dev_priv->ramin) {
>> NV_ERROR(dev, "Failed to map BAR0 PRAMIN.\n");
>> - return -ENOMEM;
>> + ret = -ENOMEM;
>> + goto err_mmio;
>> }
>> }
>>
>> @@ -857,9 +865,21 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
>> /* For kernel modesetting, init card now and bring up fbcon */
>> ret = nouveau_card_init(dev);
>> if (ret)
>> - return ret;
>> + goto err_ramin;
>>
>> return 0;
>> +
>> +err_ramin:
>> + iounmap(dev_priv->ramin);
>> +err_mmio:
>> + iounmap(dev_priv->mmio);
>> +err_wq:
>> + destroy_workqueue(dev_priv->wq);
>> +err_priv:
>> + kfree(dev_priv);
>> + dev->dev_private = NULL;
>> +err_out:
>> + return ret;
>> }
>>
>> void nouveau_lastclose(struct drm_device *dev)
[-- Attachment #1.2: Type: application/pgp-signature, Size: 229 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2010-08-05 0:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-29 18:02 [patch] nouveau: unwind on load errors Dan Carpenter
2010-07-29 18:02 ` Dan Carpenter
2010-07-29 19:39 ` Marcin Slusarz
2010-07-29 19:39 ` Marcin Slusarz
[not found] ` <20100729193948.GA4821-OI9uyE9O0yo@public.gmane.org>
2010-07-30 15:04 ` [patch v2] " Dan Carpenter
2010-07-30 15:04 ` Dan Carpenter
2010-07-30 20:20 ` Marcin Slusarz
2010-07-30 20:20 ` Marcin Slusarz
2010-08-05 0:27 ` Francisco Jerez [this message]
2010-08-05 0:27 ` Francisco Jerez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y6clhpk0.fsf@riseup.net \
--to=currojerez@riseup.net \
--cc=airlied@redhat.com \
--cc=bskeggs@redhat.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=error27@gmail.com \
--cc=grant.likely@secretlab.ca \
--cc=kernel-janitors@vger.kernel.org \
--cc=nouveau@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.