module: don't unlink the module until we've removed all exposure.
Otherwise we get a race between unload and reload of the same module:
the new module doesn't see the old one in the list, but then fails because
it can't register over the still-extant entries in sysfs:
[ 103.981925] ------------[ cut here ]------------
[ 103.986902] WARNING: at fs/sysfs/dir.c:536 sysfs_add_one+0xab/0xd0()
[ 103.993606] Hardware name: CrownBay Platform
[ 103.998075] sysfs: cannot create duplicate filename '/module/pch_gbe'
[ 104.004784] Modules linked in: pch_gbe(+) [last unloaded: pch_gbe]
[ 104.011362] Pid: 3021, comm: modprobe Tainted: G W 3.9.0-rc5+ #5
[ 104.018662] Call Trace:
[ 104.021286] [<
c103599d>] warn_slowpath_common+0x6d/0xa0
[ 104.026933] [<
c1168c8b>] ? sysfs_add_one+0xab/0xd0
[ 104.031986] [<
c1168c8b>] ? sysfs_add_one+0xab/0xd0
[ 104.037000] [<
c1035a4e>] warn_slowpath_fmt+0x2e/0x30
[ 104.042188] [<
c1168c8b>] sysfs_add_one+0xab/0xd0
[ 104.046982] [<
c1168dbe>] create_dir+0x5e/0xa0
[ 104.051633] [<
c1168e78>] sysfs_create_dir+0x78/0xd0
[ 104.056774] [<
c1262bc3>] kobject_add_internal+0x83/0x1f0
[ 104.062351] [<
c126daf6>] ? kvasprintf+0x46/0x60
[ 104.067231] [<
c1262ebd>] kobject_add_varg+0x2d/0x50
[ 104.072450] [<
c1262f07>] kobject_init_and_add+0x27/0x30
[ 104.078075] [<
c1089240>] mod_sysfs_setup+0x80/0x540
[ 104.083207] [<
c1260851>] ? module_bug_finalize+0x51/0xc0
[ 104.088720] [<
c108ab29>] load_module+0x1429/0x18b0
We can teardown sysfs first, then to be sure, put the state in
MODULE_STATE_UNFORMED so it's ignored while we deconstruct it.
Reported-by: Veaceslav Falico <vfalico@redhat.com>
Tested-by: Veaceslav Falico <vfalico@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>