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>] [day] [month] [year] [list]
Message-Id: <c293a078074331c1b221bc3bb0335eb623ae7afe.1445741504.git.geliangtang@163.com>
Date:	Sun, 25 Oct 2015 10:54:17 +0800
From:	Geliang Tang <geliangtang@....com>
To:	Anton Vorontsov <anton@...msg.org>,
	Colin Cross <ccross@...roid.com>,
	Kees Cook <keescook@...omium.org>,
	Tony Luck <tony.luck@...el.com>
Cc:	Geliang Tang <geliangtang@....com>, linux-kernel@...r.kernel.org
Subject: [PATCH] pstore: drop file opened reference count

In my recent commit, I added '.owner = THIS_MODULE' in both
pstore_fs_type and pstore_file_operations to increase a reference count
when pstore filesystem is mounted and pstore file is opened.[1]

But, it's repetitive. There is no need to increase the opened reference
count. We only need to increase the mounted reference count. When a file
is opened, the filesystem can't be unmounted. Hence the pstore module
can't be unloaded either.

So I drop the opened reference count in this patch.

[1] https://lkml.org/lkml/2015/10/20/84

Signed-off-by: Geliang Tang <geliangtang@....com>
---
Here is the reference count test:

$ sudo /sbin/insmod lib/zlib_deflate/zlib_deflate.ko
$ sudo /sbin/insmod fs/pstore/pstore.ko
$ lsmod
Module                  Size  Used by
pstore                 13301  0
zlib_deflate           20156  1 pstore

$ sudo mount -t pstore pstore /sys/fs/pstore
$ lsmod
Module                  Size  Used by
pstore                 13301  1
zlib_deflate           20156  1 pstore

$ sudo /sbin/insmod lib/reed_solomon/reed_solomon.ko
$ sudo /sbin/insmod fs/pstore/ramoops.ko mem_address=0x80000000 mem_size=0x40000 ecc=1
$ lsmod
Module                  Size  Used by
ramoops                11156  0
reed_solomon            5878  1 ramoops
pstore                 13301  2 ramoops
zlib_deflate           20156  1 pstore

$ sudo rmmod ramoops
$ lsmod
Module                  Size  Used by
reed_solomon            5878  0
pstore                 13301  1
zlib_deflate           20156  1 pstore

$ tail -f /sys/fs/pstore/console-ramoops-0 &
[1] 4479
$ lsmod
Module                  Size  Used by
reed_solomon            5878  0
pstore                 13301  1
zlib_deflate           20156  1 pstore

$ sudo umount /sys/fs/pstore
umount: /sys/fs/pstore: target is busy
        (In some cases useful info about processes that
         use the device is found by lsof(8) or fuser(1).)

$ kill -9 4479
[1]+  Killed                  tail -f /sys/fs/pstore/console-ramoops-0
$ lsmod
Module                  Size  Used by
reed_solomon            5878  0
pstore                 13301  1
zlib_deflate           20156  1 pstore

$ sudo umount /sys/fs/pstore
$ lsmod
Module                  Size  Used by
reed_solomon            5878  0
pstore                 13301  0
zlib_deflate           20156  1 pstore

$ sudo rmmod pstore
$ lsmod
Module                  Size  Used by
reed_solomon            5878  0
zlib_deflate           20156  0
---
 fs/pstore/inode.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c
index 3586491..556b9ec 100644
--- a/fs/pstore/inode.c
+++ b/fs/pstore/inode.c
@@ -178,7 +178,6 @@ static loff_t pstore_file_llseek(struct file *file, loff_t off, int whence)
 }
 
 static const struct file_operations pstore_file_operations = {
-	.owner		= THIS_MODULE,
 	.open		= pstore_file_open,
 	.read		= pstore_file_read,
 	.llseek		= pstore_file_llseek,
-- 
2.5.0


--
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