1. 12 Jun, 2011 6 commits
    • Al Viro's avatar
      Delay struct net freeing while there's a sysfs instance refering to it · a685e089
      Al Viro authored
      	* new refcount in struct net, controlling actual freeing of the memory
      	* new method in kobj_ns_type_operations (->drop_ns())
      	* ->current_ns() semantics change - it's supposed to be followed by
      corresponding ->drop_ns().  For struct net in case of CONFIG_NET_NS it bumps
      the new refcount; net_drop_ns() decrements it and calls net_free() if the
      last reference has been dropped.  Method renamed to ->grab_current_ns().
      	* old net_free() callers call net_drop_ns() instead.
      	* sysfs_exit_ns() is gone, along with a large part of callchain
      leading to it; now that the references stored in ->ns[...] stay valid we
      do not need to hunt them down and replace them with NULL.  That fixes
      problems in sysfs_lookup() and sysfs_readdir(), along with getting rid
      of sb->s_instances abuse.
      
      	Note that struct net *shutdown* logics has not changed - net_cleanup()
      is called exactly when it used to be called.  The only thing postponed by
      having a sysfs instance refering to that struct net is actual freeing of
      memory occupied by struct net.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      a685e089
    • Al Viro's avatar
      afs: fix sget() races, close leak on umount · dde194a6
      Al Viro authored
      * set ->s_fs_info in set() callback passed to sget()
      * allocate the thing and set it up enough for afs_test_super() before
      making it visible
      * have it freed in ->kill_sb() (current tree simply leaks it)
      * have ->put_super() leave ->s_fs_info->volume alone; it's too early for
      dropping it; do that from ->kill_sb() after having called kill_anon_super().
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      dde194a6
    • Al Viro's avatar
      ubifs: fix sget races · d251ed27
      Al Viro authored
      * allocate ubifs_info in ->mount(), fill it enough for sb_test() and
      set ->s_fs_info to it in set() callback passed to sget().
      * do *not* free it in ->put_super(); do that in ->kill_sb() after we'd
      done kill_anon_super().
      * don't free it in ubifs_fill_super() either - deactivate_locked_super()
      done by caller when ubifs_fill_super() returns an error will take care
      of that sucker.
      * get rid of kludge with passing ubi to ubifs_fill_super() in ->s_fs_info;
      we only need it in alloc_ubifs_info(), so ubifs_fill_super() will need
      only ubifs_info.  Which it will find in ->s_fs_info just fine, no need to
      reassign anything...
      
      As the result, sb_test() becomes safe to apply to all superblocks that
      can be found by sget() (and a kludge with temporary use of ->s_fs_info
      to store a pointer to very different structure goes away).
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      d251ed27
    • Al Viro's avatar
      ubifs: split allocation of ubifs_info into a separate function · b1c27ab3
      Al Viro authored
      preparation to ubifs sget() race fixes
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      b1c27ab3
    • Al Viro's avatar
      fix leak in proc_set_super() · ff78fca2
      Al Viro authored
      set_anon_super() can fail...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      ff78fca2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of... · b99ca60c
      Linus Torvalds authored
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
        AppArmor: Fix sleep in invalid context from task_setrlimit
      b99ca60c
  2. 11 Jun, 2011 1 commit
  3. 10 Jun, 2011 1 commit
  4. 09 Jun, 2011 30 commits
  5. 08 Jun, 2011 2 commits