LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [GIT PATCH] driver core fixes against 2.6.24-git
@ 2008-02-07 20:01 Greg KH
  2008-02-07 20:02 ` [PATCH 1/3] Block: Fix whole_disk attribute bug Greg Kroah-Hartman
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Greg KH @ 2008-02-07 20:01 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton
  Cc: linux-kernel, David S. Miller, kay.sievers, Michael_E_Brown,
	rdreier, htejun

Here's 3 patches against your current git tree that fix some more
problems that have cropped up:
	- whole_disk attribute file causes oopses when read from.
	- the firmware class name change broke Dell machines that were
	  working just fine.
	- we shouldn't BUG on a programming error in sysfs by the
	  caller, do a WARN_ON instead.

Please pull from:
	master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6.git/

Patches will be sent as a follow-on to this message to lkml for people
to see.

thanks,

greg k-h

------------

 drivers/base/firmware_class.c |    3 ++-
 fs/partitions/check.c         |   17 ++++++++++-------
 fs/sysfs/group.c              |    7 ++++++-
 3 files changed, 18 insertions(+), 9 deletions(-)

---------------

Greg Kroah-Hartman (2):
      Block: Fix whole_disk attribute bug
      sysfs: remove BUG_ON() from sysfs_remove_group()

Michael E Brown (1):
      Driver core: Revert "Fix Firmware class name collision"


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

* [PATCH 1/3] Block: Fix whole_disk attribute bug
  2008-02-07 20:01 [GIT PATCH] driver core fixes against 2.6.24-git Greg KH
@ 2008-02-07 20:02 ` Greg Kroah-Hartman
  2008-02-07 20:02 ` [PATCH 2/3] Driver core: Revert "Fix Firmware class name collision" Greg Kroah-Hartman
  2008-02-07 20:02 ` [PATCH 3/3] sysfs: remove BUG_ON() from sysfs_remove_group() Greg Kroah-Hartman
  2 siblings, 0 replies; 4+ messages in thread
From: Greg Kroah-Hartman @ 2008-02-07 20:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, Kay Sievers

The "whole_disk" attribute was not properly converted in the block
device conversion earlier, and if the file is read, bad things can
happen.  This patch fixes this, making the attribute an empty one,
preserving the original functionality.

Many thanks to David Miller for finding this, and pointing me in the
proper place within the block code to look.

Acked-by: David S. Miller <davem@davemloft.net>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 fs/partitions/check.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/fs/partitions/check.c b/fs/partitions/check.c
index 739da70..9a64045 100644
--- a/fs/partitions/check.c
+++ b/fs/partitions/check.c
@@ -319,6 +319,14 @@ void delete_partition(struct gendisk *disk, int part)
 	put_device(&p->dev);
 }
 
+static ssize_t whole_disk_show(struct device *dev,
+			       struct device_attribute *attr, char *buf)
+{
+	return 0;
+}
+static DEVICE_ATTR(whole_disk, S_IRUSR | S_IRGRP | S_IROTH,
+		   whole_disk_show, NULL);
+
 void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, int flags)
 {
 	struct hd_struct *p;
@@ -352,13 +360,8 @@ void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len,
 	device_add(&p->dev);
 	partition_sysfs_add_subdir(p);
 	p->dev.uevent_suppress = 0;
-	if (flags & ADDPART_FLAG_WHOLEDISK) {
-		static struct attribute addpartattr = {
-			.name = "whole_disk",
-			.mode = S_IRUSR | S_IRGRP | S_IROTH,
-		};
-		err = sysfs_create_file(&p->dev.kobj, &addpartattr);
-	}
+	if (flags & ADDPART_FLAG_WHOLEDISK)
+		err = device_create_file(&p->dev, &dev_attr_whole_disk);
 
 	/* suppress uevent if the disk supresses it */
 	if (!disk->dev.uevent_suppress)
-- 
1.5.4


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

* [PATCH 2/3] Driver core: Revert "Fix Firmware class name collision"
  2008-02-07 20:01 [GIT PATCH] driver core fixes against 2.6.24-git Greg KH
  2008-02-07 20:02 ` [PATCH 1/3] Block: Fix whole_disk attribute bug Greg Kroah-Hartman
@ 2008-02-07 20:02 ` Greg Kroah-Hartman
  2008-02-07 20:02 ` [PATCH 3/3] sysfs: remove BUG_ON() from sysfs_remove_group() Greg Kroah-Hartman
  2 siblings, 0 replies; 4+ messages in thread
From: Greg Kroah-Hartman @ 2008-02-07 20:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Michael E Brown, Michael E Brown, Greg Kroah-Hartman

From: Michael E Brown <Michael_E_Brown@dell.com>

This reverts commit 109f0e93b6b728f03c1eb4af02bc25d71b646c59.

The original patch breaks BIOS updates on all Dell machines. The path to
the firmware file for the dell_rbu driver changes, which breaks all of
the userspace tools which rely on it.

Note that this patch re-introduces a problem with i2c name collision
that was previously fixed by this patch.

Signed-off-by: Michael E Brown <michael_e_brown@dell.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/firmware_class.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 0295855..4a1b9bf 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -292,7 +292,8 @@ firmware_class_timeout(u_long data)
 
 static inline void fw_setup_device_id(struct device *f_dev, struct device *dev)
 {
-	snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s", dev->bus_id);
+	/* XXX warning we should watch out for name collisions */
+	strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE);
 }
 
 static int fw_register_device(struct device **dev_p, const char *fw_name,
-- 
1.5.4


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

* [PATCH 3/3] sysfs: remove BUG_ON() from sysfs_remove_group()
  2008-02-07 20:01 [GIT PATCH] driver core fixes against 2.6.24-git Greg KH
  2008-02-07 20:02 ` [PATCH 1/3] Block: Fix whole_disk attribute bug Greg Kroah-Hartman
  2008-02-07 20:02 ` [PATCH 2/3] Driver core: Revert "Fix Firmware class name collision" Greg Kroah-Hartman
@ 2008-02-07 20:02 ` Greg Kroah-Hartman
  2 siblings, 0 replies; 4+ messages in thread
From: Greg Kroah-Hartman @ 2008-02-07 20:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, Roland Dreier, Tejun Heo

It's possible that the caller of sysfs_remove_group messed up and passed in an attribute group that was not really registered to this kobject.  But don't panic for such a foolish error, spit out a warning about what happened, and continue on our way safely.

Cc: Roland Dreier <rdreier@cisco.com>
Cc: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 fs/sysfs/group.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c
index 0871c3d..4779049 100644
--- a/fs/sysfs/group.c
+++ b/fs/sysfs/group.c
@@ -77,7 +77,12 @@ void sysfs_remove_group(struct kobject * kobj,
 
 	if (grp->name) {
 		sd = sysfs_get_dirent(dir_sd, grp->name);
-		BUG_ON(!sd);
+		if (!sd) {
+			printk(KERN_WARNING "sysfs group %p not found for "
+				"kobject '%s'\n", grp, kobject_name(kobj));
+			WARN_ON(!sd);
+			return;
+		}
 	} else
 		sd = sysfs_get(dir_sd);
 
-- 
1.5.4


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

end of thread, other threads:[~2008-02-07 20:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-07 20:01 [GIT PATCH] driver core fixes against 2.6.24-git Greg KH
2008-02-07 20:02 ` [PATCH 1/3] Block: Fix whole_disk attribute bug Greg Kroah-Hartman
2008-02-07 20:02 ` [PATCH 2/3] Driver core: Revert "Fix Firmware class name collision" Greg Kroah-Hartman
2008-02-07 20:02 ` [PATCH 3/3] sysfs: remove BUG_ON() from sysfs_remove_group() Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).