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>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 29 Aug 2014 10:33:23 +0800
From:	Chen LinX <linx.z.chen@...el.com>
To:	gregkh@...uxfoundation.org, linux-kernel@...r.kernel.org
Cc:	yanmin_zhang@...ux.intel.com, "Chen, LinX" <linx.z.chen@...el.com>,
	"He, Bo" <bo.he@...el.com>
Subject: [PATCH V2] debugfs: keep the old mode value at remount when no explicit change

From: "Chen, LinX" <linx.z.chen@...el.com>

Android framework has a good method to detect userspace hang and reports
UIWDT issues. It uses client/server model. Clients communicate with
servers by binder. binder has debugfs interfaces. Some files show what
threads are communicating with what other threads. If one thread is
blocked for a long time, we can find the blocking chain from the binder
info. Since the error dumping process has no root access, booting
process changes debugfs mount dir mode to 0755. When UIWDT happens,
the error dumping process can read the info.

Unfortunately, some other scripts at booting try to mount debugfs for
many times. No matter if the double mounting fails or succeeds,
debugfs_parse_options changes the root inode's mode back to default
0700. It means the effect of previous mode changing to 0755 is lost.
At UIWDT, the dumping process can't save binder info to disk log files.

The patch checks if debugfs_mount_opts->mode is initiated. If it is
already, it bypasses the reinitiation, and the old mode value is kept.

Signed-off-by: He, Bo <bo.he@...el.com>
Signed-off-by: Chen, LinX <linx.z.chen@...el.com>
---
 fs/debugfs/inode.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index c7c83ff..f1eb4b9 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -159,7 +159,8 @@ static int debugfs_parse_options(char *data, struct debugfs_mount_opts *opts)
 	kgid_t gid;
 	char *p;
 
-	opts->mode = DEBUGFS_DEFAULT_MODE;
+	if (opts->mode == 0)
+		opts->mode = DEBUGFS_DEFAULT_MODE;
 
 	while ((p = strsep(&data, ",")) != NULL) {
 		if (!*p)
-- 
1.7.9.5

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