mm: bdi: fix race in bdi_class device creation
authorGreg Kroah-Hartman <gregkh@suse.de>
Thu, 15 May 2008 20:44:08 +0000 (13:44 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 May 2008 20:31:53 +0000 (13:31 -0700)
commit19051c5035d217e572672a2ca9db06c1cef50e9b
tree9fef0047e070c977463a85d5cbd0f9479694d286
parent8882b39421bae317e3ee864edd845e994307ce16
mm: bdi: fix race in bdi_class device creation

There is a race from when a device is created with device_create() and
then the drvdata is set with a call to dev_set_drvdata() in which a
sysfs file could be open, yet the drvdata will be NULL, causing all
sorts of bad things to happen.

This patch fixes the problem by using the new function,
device_create_vargs().

Many thanks to Arthur Jones <ajones@riverbed.com> for reporting the bug,
and testing patches out.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Arthur Jones <ajones@riverbed.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
mm/backing-dev.c