* [GIT PATCH] driver core fixes for .35-git
@ 2010-06-04 20:44 Greg KH
0 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2010-06-04 20:44 UTC (permalink / raw)
To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel
Here's 3 bugfixes for your .35-rc git tree.
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git/
All of these patches have been in the linux-next and mm trees.
The patches will be sent as a follow-on to this message to lkml for
people to see.
thanks,
greg k-h
------------
fs/configfs/inode.c | 9 ++++-----
fs/sysfs/inode.c | 6 ++++--
lib/kobject_uevent.c | 3 +++
3 files changed, 11 insertions(+), 7 deletions(-)
---------------
Andrew Morton (1):
lib/kobject_uevent.c: fix CONIG_NET=n warning
Dan Carpenter (1):
kobject: free memory if netlink_kernel_create() fails
Nick Piggin (1):
fix setattr error handling in sysfs, configfs
^ permalink raw reply [flat|nested] 5+ messages in thread
* [GIT PATCH] driver core fixes for .35-git
@ 2010-07-26 19:09 Greg KH
2010-07-26 19:18 ` [PATCH 1/3] sysfs: Don't allow the creation of symlinks we can't remove Greg Kroah-Hartman
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Greg KH @ 2010-07-26 19:09 UTC (permalink / raw)
To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel
Here's 3 sysfs bugfixes for your .35-rc git tree. These all fix up
regressions that people have reported due to the network namespace
changes to sysfs for the .35 release.
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git/
All of these patches have been in the linux-next and mm trees.
The patches will be sent as a follow-on to this message to lkml for
people to see.
thanks,
greg k-h
------------
fs/sysfs/symlink.c | 26 ++++++++++++++++++++------
1 files changed, 20 insertions(+), 6 deletions(-)
---------------
Eric W. Biederman (3):
sysfs: Don't allow the creation of symlinks we can't remove
sysfs: sysfs_delete_link handle symlinks from untagged to tagged directories.
sysfs: allow creating symlinks from untagged to tagged directories
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] sysfs: Don't allow the creation of symlinks we can't remove
2010-07-26 19:09 [GIT PATCH] driver core fixes for .35-git Greg KH
@ 2010-07-26 19:18 ` Greg Kroah-Hartman
2010-07-26 19:18 ` [PATCH 2/3] sysfs: sysfs_delete_link handle symlinks from untagged to tagged directories Greg Kroah-Hartman
2010-07-26 19:18 ` [PATCH 3/3] sysfs: allow creating " Greg Kroah-Hartman
2 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2010-07-26 19:18 UTC (permalink / raw)
To: linux-kernel
Cc: Eric W. Biederman, Andrew Morton, Rafael J. Wysocki,
Maciej W. Rozycki, Kay Sievers, Johannes Berg, Greg Kroah-Hartman
From: Eric W. Biederman <ebiederm@xmission.com>
Recently my tagged sysfs support revealed a flaw in the device core
that a few rare drivers are running into such that we don't always put
network devices in a class subdirectory named net/.
Since we are not creating the class directory the network devices wind
up in a non-tagged directory, but the symlinks to the network devices
from /sys/class/net are in a tagged directory. All of which works
until we go to remove or rename the symlink. When we remove or rename
a symlink we look in the namespace of the target of the symlink.
Since the target of the symlink is in a non-tagged sysfs directory we
don't have a namespace to look in, and we fail to remove the symlink.
Detect this problem up front and simply don't create symlinks we won't
be able to remove later. This prevents symlink leakage and fails in
a much clearer and more understandable way.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Maciej W. Rozycki <macro@linux-mips.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/sysfs/symlink.c | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index f71246b..44bca5f 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -28,6 +28,7 @@ static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
struct sysfs_dirent *target_sd = NULL;
struct sysfs_dirent *sd = NULL;
struct sysfs_addrm_cxt acxt;
+ enum kobj_ns_type ns_type;
int error;
BUG_ON(!name);
@@ -58,16 +59,28 @@ static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
if (!sd)
goto out_put;
- if (sysfs_ns_type(parent_sd))
+ ns_type = sysfs_ns_type(parent_sd);
+ if (ns_type)
sd->s_ns = target->ktype->namespace(target);
sd->s_symlink.target_sd = target_sd;
target_sd = NULL; /* reference is now owned by the symlink */
sysfs_addrm_start(&acxt, parent_sd);
- if (warn)
- error = sysfs_add_one(&acxt, sd);
- else
- error = __sysfs_add_one(&acxt, sd);
+ /* Symlinks must be between directories with the same ns_type */
+ if (ns_type == sysfs_ns_type(sd->s_symlink.target_sd->s_parent)) {
+ if (warn)
+ error = sysfs_add_one(&acxt, sd);
+ else
+ error = __sysfs_add_one(&acxt, sd);
+ } else {
+ error = -EINVAL;
+ WARN(1, KERN_WARNING
+ "sysfs: symlink across ns_types %s/%s -> %s/%s\n",
+ parent_sd->s_name,
+ sd->s_name,
+ sd->s_symlink.target_sd->s_parent->s_name,
+ sd->s_symlink.target_sd->s_name);
+ }
sysfs_addrm_finish(&acxt);
if (error)
--
1.7.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] sysfs: sysfs_delete_link handle symlinks from untagged to tagged directories.
2010-07-26 19:09 [GIT PATCH] driver core fixes for .35-git Greg KH
2010-07-26 19:18 ` [PATCH 1/3] sysfs: Don't allow the creation of symlinks we can't remove Greg Kroah-Hartman
@ 2010-07-26 19:18 ` Greg Kroah-Hartman
2010-07-26 19:18 ` [PATCH 3/3] sysfs: allow creating " Greg Kroah-Hartman
2 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2010-07-26 19:18 UTC (permalink / raw)
To: linux-kernel; +Cc: Eric W. Biederman, Greg Kroah-Hartman
From: Eric W. Biederman <ebiederm@xmission.com>
This happens for network devices when SYSFS_DEPRECATED is enabled.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/sysfs/symlink.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index 44bca5f..6603833 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -135,7 +135,7 @@ void sysfs_delete_link(struct kobject *kobj, struct kobject *targ,
{
const void *ns = NULL;
spin_lock(&sysfs_assoc_lock);
- if (targ->sd)
+ if (targ->sd && sysfs_ns_type(kobj->sd))
ns = targ->sd->s_ns;
spin_unlock(&sysfs_assoc_lock);
sysfs_hash_and_remove(kobj->sd, ns, name);
--
1.7.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] sysfs: allow creating symlinks from untagged to tagged directories
2010-07-26 19:09 [GIT PATCH] driver core fixes for .35-git Greg KH
2010-07-26 19:18 ` [PATCH 1/3] sysfs: Don't allow the creation of symlinks we can't remove Greg Kroah-Hartman
2010-07-26 19:18 ` [PATCH 2/3] sysfs: sysfs_delete_link handle symlinks from untagged to tagged directories Greg Kroah-Hartman
@ 2010-07-26 19:18 ` Greg Kroah-Hartman
2 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2010-07-26 19:18 UTC (permalink / raw)
To: linux-kernel; +Cc: Eric W. Biederman, Greg Kroah-Hartman
From: Eric W. Biederman <ebiederm@xmission.com>
Supporting symlinks from untagged to tagged directories is reasonable,
and needed to support CONFIG_SYSFS_DEPRECATED. So don't fail a prior
allowing that case to work.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/sysfs/symlink.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index 6603833..a7ac78f 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -67,7 +67,8 @@ static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
sysfs_addrm_start(&acxt, parent_sd);
/* Symlinks must be between directories with the same ns_type */
- if (ns_type == sysfs_ns_type(sd->s_symlink.target_sd->s_parent)) {
+ if (!ns_type ||
+ (ns_type == sysfs_ns_type(sd->s_symlink.target_sd->s_parent))) {
if (warn)
error = sysfs_add_one(&acxt, sd);
else
--
1.7.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-07-26 19:18 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-26 19:09 [GIT PATCH] driver core fixes for .35-git Greg KH
2010-07-26 19:18 ` [PATCH 1/3] sysfs: Don't allow the creation of symlinks we can't remove Greg Kroah-Hartman
2010-07-26 19:18 ` [PATCH 2/3] sysfs: sysfs_delete_link handle symlinks from untagged to tagged directories Greg Kroah-Hartman
2010-07-26 19:18 ` [PATCH 3/3] sysfs: allow creating " Greg Kroah-Hartman
-- strict thread matches above, loose matches on Subject: below --
2010-06-04 20:44 [GIT PATCH] driver core fixes for .35-git Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox