Skip to content
  • Eric W. Biederman's avatar
    sysfs: Don't allow the creation of symlinks we can't remove · 96d6523a
    Eric W. Biederman authored
    
    
    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: default avatarEric 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: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    96d6523a