public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Is devm_* broken ?
@ 2015-07-14 22:34 Laurent Pinchart
  2015-07-15 15:51 ` Takashi Iwai
  2015-07-15 17:00 ` Dan Williams
  0 siblings, 2 replies; 14+ messages in thread
From: Laurent Pinchart @ 2015-07-14 22:34 UTC (permalink / raw)
  To: linux-kernel

Hello,

I came to realize not too long ago that the following sequence of events will 
lead to a crash with any platform driver that uses devm_* and creates device 
nodes.

1. Get a platform device bound it its driver
2. Open the corresponding device node in userspace and keep it open
3. Unbind the platform device from its driver through sysfs

echo <device-name> > /sys/bus/platform/drivers/<driver-name>/unbind

(or for hotpluggable devices just unplug the device)

4. Close the device node
5. Enjoy the fireworks

While having a device node open prevents modules from being unloaded, it 
doesn't prevent devices from being unbound from drivers. If the driver uses 
devm_* helpers to allocate memory the memory will be freed when the device is 
unbound from the driver, but that memory will still be used by any operation 
touching an open device node.

Is devm_* inherently broken ? It's so widely used, tell me I'm missing 
something obvious.

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-08-04 21:26 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-14 22:34 Is devm_* broken ? Laurent Pinchart
2015-07-15 15:51 ` Takashi Iwai
2015-07-15 16:08   ` Laurent Pinchart
2015-07-15 16:20     ` Takashi Iwai
2015-07-15 16:27       ` Laurent Pinchart
2015-07-15 16:34         ` Takashi Iwai
2015-07-28 14:10           ` Laurent Pinchart
2015-07-15 17:00 ` Dan Williams
2015-07-15 18:03   ` Tejun Heo
2015-07-28 14:16     ` Laurent Pinchart
2015-07-28 15:22       ` Tejun Heo
2015-07-28 17:05         ` Laurent Pinchart
2015-08-04 19:56           ` Pavel Machek
2015-08-04 21:26             ` Dmitry Torokhov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox