Re: [PATCH v5 9/12] OMAP: dmtimer: platform driver

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

 



* DebBarma, Tarun Kanti <tarun.kanti@xxxxxx> [2010-12-07 11:02:26 +0530]:

> > -----Original Message-----
> > From: G, Manjunath Kondaiah
> > Sent: Tuesday, December 07, 2010 12:40 AM
> > To: DebBarma, Tarun Kanti
> > Cc: linux-omap@xxxxxxxxxxxxxxx; Gopinath, Thara
> > Subject: Re: [PATCH v5 9/12] OMAP: dmtimer: platform driver
> > 
> > On Tue, Dec 07, 2010 at 05:14:16AM +0530, Tarun Kanti DebBarma wrote:
> > > From: Thara Gopinath <thara@xxxxxx>
> > >
> > > Add dmtimer platform driver functions which include:
> > > (1) platform driver initialization
> > > (2) driver probe function
> > > (3) driver remove function
> > >
> > > Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@xxxxxx>
> > > Signed-off-by: Thara Gopinath <thara@xxxxxx>
> > > Reviewed-by: Cousson, Benoit <b-cousson@xxxxxx>

[...]

> > > +
> > > +err_free_mem:
> > > +	kfree(timer);
> > > +
> > > +err_release_ioregion:
> > > +	release_mem_region(mem->start, resource_size(mem));
> > > +
> > > +err_free_pdev:
> > You can also free pdata?
> This pdata points to data within pdev created by omap_device_build.
> But the pdata which was allocated locally is already freed
> After omap_device_build() in omap_timer_init() in mach-omap.

You should also free memory allocated for pdata during omap_device_build
since you no longer require pdata due to probe fail.

> 
> > > +	platform_device_del(pdev);
> > > +
> > > +	return ret;
> > > +}
> > > +
> > > +/**
> > > + * omap_dm_timer_remove - cleanup a registered timer device
> > > + * @pdev:	pointer to current timer platform device
> > > + *
> > > + * Called by driver framework whenever a timer device is unregistered.
> > > + * In addition to freeing platform resources it also deletes the timer
> > > + * entry from the local list.
> > > + */
> > > +static int __devexit omap_dm_timer_remove(struct platform_device *pdev)
> > > +{
> > > +	struct omap_dm_timer *timer, *tmp;
> > > +	unsigned long flags;
> > > +	int ret = -EINVAL;
> > > +
> > > +	spin_lock_irqsave(&dm_timer_lock, flags);
> > > +	list_for_each_entry_safe(timer, tmp, &omap_timer_list, node) {
> > > +		if (timer->pdev->id == pdev->id) {
> > > +			platform_device_del(timer->pdev);
> > > +			list_del(&timer->node);
> > > +			kfree(timer);
> > kfree(pdev->dev.platform_data);
> Ok, this is supposed to be done as part of platform_device_del above.

No. platform_device_del will not free platform_data. You have use kfree for
freeing pdata or platform_data.

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


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux