All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] base/platform: Platform data and resources NULL handling
@ 2010-09-07 13:31 Anton Vorontsov
  2010-09-07 13:31 ` [PATCH 1/2] base/platform: Safe handling for NULL platform data and resources Anton Vorontsov
  2010-09-07 13:31 ` [PATCH 2/2] base/platform: Simplifications for NULL platform data/resources handling Anton Vorontsov
  0 siblings, 2 replies; 3+ messages in thread
From: Anton Vorontsov @ 2010-09-07 13:31 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Samuel Ortiz, Mark Brown, linux-kernel

Hi all,

There is a bug in the MFD core code (drivers/mfd/mfd-core.c),
the mfd_add_device function does not check platform_data for NULL,
and thus always calls platform_device_add_data():

static int mfd_add_device(struct device *parent, int id, [...])
{
	[...]
	ret = platform_device_add_data(pdev,
		cell->platform_data, cell->data_size);
	[...]
}

The problem is that when cell->platform_data is NULL, the platform
core calls kmemdup(NULL, 0, ...), which returns a non-NULL result
(ZERO_SIZE_PTR), and the result is stored in the dev.platform_data.
This causes drivers to oops on a valid code:

if (pdata)
	stuff = pdata->stuff;

Firstly I thought that I would fix the MFD core, but it appears
that the better approach would be to change device_add_data() call
behaviour, and thus make the core code more safe.

There are two patches: a patch that is necessary for the bug fix,
and a non-essential cleanup patch.

Thanks,

-- 
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2

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

end of thread, other threads:[~2010-09-07 13:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-07 13:31 [PATCH 0/2] base/platform: Platform data and resources NULL handling Anton Vorontsov
2010-09-07 13:31 ` [PATCH 1/2] base/platform: Safe handling for NULL platform data and resources Anton Vorontsov
2010-09-07 13:31 ` [PATCH 2/2] base/platform: Simplifications for NULL platform data/resources handling Anton Vorontsov

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.