lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 24 Jan 2008 23:09:45 -0800
From:	Greg Kroah-Hartman <gregkh@...e.de>
To:	linux-kernel@...r.kernel.org
Cc:	Greg Kroah-Hartman <gregkh@...e.de>,
	Kay Sievers <kay.sievers@...y.org>
Subject: [PATCH 047/196] kobject: get rid of kobject_kset_add_dir

kobject_kset_add_dir is only called in one place so remove it and use
kobject_create() instead.

Cc: Kay Sievers <kay.sievers@...y.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@...e.de>
---
 drivers/base/core.c     |   16 ++++++++++++++--
 include/linux/kobject.h |    4 +---
 lib/kobject.c           |   37 +++++--------------------------------
 3 files changed, 20 insertions(+), 37 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index 992eba3..7762ee8 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -571,6 +571,8 @@ static struct kobject *virtual_device_parent(struct device *dev)
 static struct kobject * get_device_parent(struct device *dev,
 					  struct device *parent)
 {
+	int retval;
+
 	if (dev->class) {
 		struct kobject *kobj = NULL;
 		struct kobject *parent_kobj;
@@ -600,8 +602,18 @@ static struct kobject * get_device_parent(struct device *dev,
 			return kobj;
 
 		/* or create a new class-directory at the parent device */
-		return kobject_kset_add_dir(&dev->class->class_dirs,
-					    parent_kobj, dev->class->name);
+		k = kobject_create();
+		if (!k)
+			return NULL;
+		k->kset = &dev->class->class_dirs;
+		retval = kobject_add_ng(k, parent_kobj, "%s", dev->class->name);
+		if (retval < 0) {
+			kobject_put(k);
+			return NULL;
+		}
+		/* Do not emit a uevent, as it's not needed for this
+		 * "class glue" directory. */
+		return k;
 	}
 
 	if (parent)
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index 7b09136..718b488 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -91,6 +91,7 @@ extern int __must_check kobject_init_and_add(struct kobject *kobj,
 
 extern void kobject_del(struct kobject *);
 
+extern struct kobject * __must_check kobject_create(void);
 extern struct kobject * __must_check kobject_create_and_add(const char *name,
 						struct kobject *parent);
 
@@ -103,9 +104,6 @@ extern void kobject_unregister(struct kobject *);
 extern struct kobject * kobject_get(struct kobject *);
 extern void kobject_put(struct kobject *);
 
-extern struct kobject *kobject_kset_add_dir(struct kset *kset,
-					    struct kobject *, const char *);
-
 extern char * kobject_get_path(struct kobject *, gfp_t);
 
 struct kobj_type {
diff --git a/lib/kobject.c b/lib/kobject.c
index 96b61d9..67c3d38 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -629,15 +629,18 @@ static struct kobj_type dynamic_kobj_ktype = {
 	.release = dynamic_kobj_release,
 };
 
-/*
+/**
  * kobject_create - create a struct kobject dynamically
  *
  * This function creates a kobject structure dynamically and sets it up
  * to be a "dynamic" kobject with a default release function set up.
  *
  * If the kobject was not able to be created, NULL will be returned.
+ * The kobject structure returned from here must be cleaned up with a
+ * call to kobject_put() and not kfree(), as kobject_init_ng() has
+ * already been called on this structure.
  */
-static struct kobject *kobject_create(void)
+struct kobject *kobject_create(void)
 {
 	struct kobject *kobj;
 
@@ -683,36 +686,6 @@ struct kobject *kobject_create_and_add(const char *name, struct kobject *parent)
 EXPORT_SYMBOL_GPL(kobject_create_and_add);
 
 /**
- *	kobject_kset_add_dir - add sub directory of object.
- *	@kset:		kset the directory is belongs to.
- *	@parent:	object in which a directory is created.
- *	@name:	directory name.
- *
- *	Add a plain directory object as child of given object.
- */
-struct kobject *kobject_kset_add_dir(struct kset *kset,
-				     struct kobject *parent, const char *name)
-{
-	struct kobject *k;
-	int ret;
-
-	k = kobject_create();
-	if (!k)
-		return NULL;
-
-	k->kset = kset;
-	ret = kobject_add_ng(k, parent, "%s", name);
-	if (ret < 0) {
-		printk(KERN_WARNING "%s: kobject_add error: %d\n",
-			__func__, ret);
-		kobject_put(k);
-		k = NULL;
-	}
-
-	return k;
-}
-
-/**
  *	kset_init - initialize a kset for use
  *	@k:	kset 
  */
-- 
1.5.3.8

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ