From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Carpenter Subject: re: vfs: make mounts and mountstats honor root dir like mountinfo does Date: Mon, 10 Aug 2015 15:15:43 +0300 Message-ID: <20150810121543.GA4359@mwanda> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-fsdevel@vger.kernel.org To: ldv@altlinux.org Return-path: Received: from userp1040.oracle.com ([156.151.31.81]:31667 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751684AbbHJMQH (ORCPT ); Mon, 10 Aug 2015 08:16:07 -0400 Content-Disposition: inline Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Hello Dmitry V. Levin, The patch 9d4d65748a5c: "vfs: make mounts and mountstats honor root dir like mountinfo does" from Dec 16, 2014, leads to the following static checker warning: fs/proc_namespace.c:223 show_vfsstat() warn: we tested 'err' before and it was 'false' fs/proc_namespace.c 188 static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt) 189 { 190 struct proc_mounts *p = m->private; 191 struct mount *r = real_mount(mnt); 192 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; 193 struct super_block *sb = mnt_path.dentry->d_sb; 194 int err = 0; 195 196 /* device */ 197 if (sb->s_op->show_devname) { 198 seq_puts(m, "device "); 199 err = sb->s_op->show_devname(m, mnt_path.dentry); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Do we care if this fails? 200 } else { 201 if (r->mnt_devname) { 202 seq_puts(m, "device "); 203 mangle(m, r->mnt_devname); 204 } else 205 seq_puts(m, "no device"); 206 } 207 208 /* mount point */ 209 seq_puts(m, " mounted on "); 210 /* mountpoints outside of chroot jail will give SEQ_SKIP on this */ 211 err = seq_path_root(m, &mnt_path, &p->root, " \t\n\\"); 212 if (err) 213 goto out; We over-write it here. 214 seq_putc(m, ' '); 215 216 /* file system type */ 217 seq_puts(m, "with fstype "); 218 show_type(m, sb); 219 220 /* optional statistics */ 221 if (sb->s_op->show_stats) { 222 seq_putc(m, ' '); 223 if (!err) 224 err = sb->s_op->show_stats(m, mnt_path.dentry); So we get a static checker warning because the "if (!err)" check is not needed. 225 } 226 227 seq_putc(m, '\n'); 228 out: 229 return err; 230 } regards, dan carpenter