Coly Li
013bbbc3e9
romfs: use different way to generate fsid for BLOCK or MTD
...
[ Upstream commit f598f82e204ec0b17797caaf1b0311c52d43fb9a ]
Commit 8a59f5d252 ("fs/romfs: return f_fsid for statfs(2)") generates
a 64bit id from sb->s_bdev->bd_dev. This is only correct when romfs is
defined with CONFIG_ROMFS_ON_BLOCK. If romfs is only defined with
CONFIG_ROMFS_ON_MTD, sb->s_bdev is NULL, referencing sb->s_bdev->bd_dev
will triger an oops.
Richard Weinberger points out that when CONFIG_ROMFS_BACKED_BY_BOTH=y,
both CONFIG_ROMFS_ON_BLOCK and CONFIG_ROMFS_ON_MTD are defined.
Therefore when calling huge_encode_dev() to generate a 64bit id, I use
the follow order to choose parameter,
- CONFIG_ROMFS_ON_BLOCK defined
use sb->s_bdev->bd_dev
- CONFIG_ROMFS_ON_BLOCK undefined and CONFIG_ROMFS_ON_MTD defined
use sb->s_dev when,
- both CONFIG_ROMFS_ON_BLOCK and CONFIG_ROMFS_ON_MTD undefined
leave id as 0
When CONFIG_ROMFS_ON_MTD is defined and sb->s_mtd is not NULL, sb->s_dev
is set to a device ID generated by MTD_BLOCK_MAJOR and mtd index,
otherwise sb->s_dev is 0.
This is a try-best effort to generate a uniq file system ID, if all the
above conditions are not meet, f_fsid of this romfs instance will be 0.
Generally only one romfs can be built on single MTD block device, this
method is enough to identify multiple romfs instances in a computer.
Link: http://lkml.kernel.org/r/1482928596-115155-1-git-send-email-colyli@suse.de
Signed-off-by: Coly Li <colyli@suse.de>
Reported-by: Nong Li <nongli1031@gmail.com>
Tested-by: Nong Li <nongli1031@gmail.com>
Cc: Richard Weinberger <richard.weinberger@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-06-17 06:41:56 +02:00
..
9p
9p: fix a potential acl leak
2017-05-14 14:00:13 +02:00
adfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
affs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
afs
fs: Better permission checking for submounts
2017-03-15 10:02:44 +08:00
autofs4
fs: Better permission checking for submounts
2017-03-15 10:02:44 +08:00
befs
befs fixes for 4.9-rc1
2016-10-15 12:09:13 -07:00
bfs
Merge remote-tracking branch 'ovl/rename2' into for-linus
2016-10-10 23:02:51 -04:00
btrfs
btrfs: fix memory leak in update_space_info failure path
2017-06-14 15:06:02 +02:00
cachefiles
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
ceph
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
cifs
CIFS: add misssing SFM mapping for doublequote
2017-05-20 14:28:40 +02:00
coda
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
configfs
Merge remote-tracking branch 'ovl/rename2' into for-linus
2016-10-10 23:02:51 -04:00
cramfs
crypto
fscrypt: avoid collisions when presenting long encrypted filenames
2017-05-25 15:44:38 +02:00
debugfs
fs: Better permission checking for submounts
2017-03-15 10:02:44 +08:00
devpts
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
dlm
dlm: free workqueues after the connections
2016-10-10 09:54:00 -05:00
ecryptfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
efivarfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
efs
exofs
fs: exofs: print a hex number after a 0x prefix
2016-10-27 18:43:43 -07:00
exportfs
exportfs: be careful to only return expected errors.
2016-10-06 09:07:44 -04:00
ext2
ext2: avoid bogus -Wmaybe-uninitialized warning
2016-10-18 11:29:35 +02:00
ext4
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
f2fs
fscrypt: avoid collisions when presenting long encrypted filenames
2017-05-25 15:44:38 +02:00
fat
fat: fix using uninitialized fields of fat_inode/fsinfo_inode
2017-03-15 10:02:52 +08:00
freevxfs
fscache
FS-Cache: Initialise stores_lock in netfs cookie
2017-06-17 06:41:52 +02:00
fuse
fuse: add missing FR_FORCE
2017-03-12 06:41:47 +01:00
gfs2
gfs2: Use rhashtable walk interface in glock_hash_walk
2017-06-17 06:41:50 +02:00
hfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
hfsplus
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
hostfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
hpfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
hugetlbfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
isofs
isofs: add KERN_CONT to printing of ER records
2016-11-30 10:41:26 -08:00
jbd2
jbd2: don't leak memory if setting up journal fails
2017-03-30 09:41:27 +02:00
jffs2
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
jfs
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
kernfs
kernfs: Add noop_fsync to supported kernfs_file_fops
2016-10-27 17:47:11 +02:00
lockd
treewide: remove redundant #include <linux/kconfig.h>
2016-10-11 15:06:33 -07:00
logfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
minix
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
ncpfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
nfs
nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED"
2017-06-17 06:41:55 +02:00
nfs_common
nfsd
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
nilfs2
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
nls
notify
fanotify: don't expose EOPENSTALE to userspace
2017-05-25 15:44:31 +02:00
ntfs
fs: remove the never implemented aio_fsync file operation
2016-10-30 13:09:42 -04:00
ocfs2
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
omfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
openpromfs
fs: Replace CURRENT_TIME with current_time() for inode timestamps
2016-09-27 21:06:21 -04:00
orangefs
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
overlayfs
ovl: fix d_real() for stacked fs
2016-11-29 10:20:24 +01:00
proc
proc: Fix unbalanced hard link numbers
2017-05-25 15:44:37 +02:00
pstore
pstore: Shut down worker when unregistering
2017-05-20 14:28:42 +02:00
qnx4
qnx6
quota
quota: fill in Q_XGETQSTAT inode information for inactive quotas
2016-08-15 17:43:31 +02:00
ramfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
reiserfs
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
romfs
romfs: use different way to generate fsid for BLOCK or MTD
2017-06-17 06:41:56 +02:00
squashfs
vfs: Remove {get,set,remove}xattr inode operations
2016-10-07 21:48:36 -04:00
sysfs
sysfs: be careful of error returns from ops->show()
2017-04-12 12:41:11 +02:00
sysv
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
tracefs
fs: Replace CURRENT_TIME with current_time() for inode timestamps
2016-09-27 21:06:21 -04:00
ubifs
ubifs: Fix O_TMPFILE corner case in ubifs_link()
2017-04-27 09:10:38 +02:00
udf
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
ufs
ufs_getfrag_block(): we only grab ->truncate_mutex on block creation path
2017-06-14 15:06:01 +02:00
xfs
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
aio.c
aio: fix freeze protection of aio writes
2016-10-30 13:09:42 -04:00
anon_inodes.c
attr.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
bad_inode.c
bad_inode: add missing i_op initializers
2017-01-09 08:32:24 +01:00
binfmt_aout.c
binfmt_elf.c
x86/coredump: Use pr_reg size, rather that TIF_IA32 flag
2016-09-14 21:28:10 +02:00
binfmt_elf_fdpic.c
elf_fdpic_transfer_args_to_stack(): make it generic
2016-07-25 16:51:49 +10:00
binfmt_em86.c
fs/binfmt_em86.c: fix incompatible pointer type
2016-08-02 19:35:15 -04:00
binfmt_flat.c
binfmt_flat: allow compressed flat binary format to work on MMU systems
2016-07-28 13:29:12 +10:00
binfmt_misc.c
fs: Replace current_fs_time() with current_time()
2016-09-27 21:06:22 -04:00
binfmt_script.c
block_dev.c
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
buffer.c
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
char_dev.c
dax: define a unified inode/address_space for device-dax mappings
2016-08-23 22:58:51 -07:00
compat.c
compat: remove compat_printk()
2016-09-27 21:20:53 -04:00
compat_binfmt_elf.c
compat_ioctl.c
fs: compat_ioctl: add pretimeout functions for watchdogs
2016-09-24 09:27:18 +02:00
coredump.c
coredump: fix unfreezable coredumping task
2016-11-11 08:12:37 -08:00
dax.c
fs: break out of iomap_file_buffered_write on fatal signals
2017-02-09 08:08:31 +01:00
dcache.c
mnt: Protect the mountpoint hashtable with mount_lock
2017-01-19 20:18:03 +01:00
dcookies.c
direct-io.c
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
drop_caches.c
eventfd.c
eventpoll.c
exec.c
ptrace: Capture the ptracer's creds not PT_PTRACE_CAP
2017-01-06 10:40:13 +01:00
fcntl.c
fhandle.c
file.c
fs/file: more unsigned file descriptors
2016-09-27 18:47:38 -04:00
file_table.c
filesystems.c
fs-writeback.c
mm, writeback: flush plugged IO in wakeup_flusher_threads()
2016-08-09 19:58:06 -06:00
fs_pin.c
fs_struct.c
inode.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
internal.h
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 13:04:49 -07:00
ioctl.c
vfs: cap dedupe request structure size at PAGE_SIZE
2016-09-15 13:29:52 -07:00
iomap.c
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
Kconfig
mm/hugetlb: introduce ARCH_HAS_GIGANTIC_PAGE
2016-10-07 18:46:29 -07:00
Kconfig.binfmt
ARM: 8594/1: enable binfmt_flat on systems with an MMU
2016-08-12 16:47:05 +01:00
libfs.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
locks.c
locking, fs/locks: Add missing file_sem locks
2016-10-18 12:21:28 +02:00
Makefile
mbcache.c
mbcache: fix to detect failure of register_shrinker
2016-08-31 11:44:36 -04:00
mount.h
mnt: Tuck mounts under others instead of creating shadow/side mounts.
2017-03-15 10:02:43 +08:00
mpage.c
fs: add i_blocksize()
2017-06-14 15:06:00 +02:00
namei.c
fs: Better permission checking for submounts
2017-03-15 10:02:44 +08:00
namespace.c
fs: Better permission checking for submounts
2017-03-15 10:02:44 +08:00
no-block.c
nsfs.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
open.c
xfs: reflink update for 4.9-rc1
2016-10-13 20:28:22 -07:00
pipe.c
pipe: cap initial pipe capacity according to pipe-max-size limit
2016-10-11 15:06:32 -07:00
pnode.c
mnt: Tuck mounts under others instead of creating shadow/side mounts.
2017-03-15 10:02:43 +08:00
pnode.h
mnt: Tuck mounts under others instead of creating shadow/side mounts.
2017-03-15 10:02:43 +08:00
posix_acl.c
tmpfs: clear S_ISGID when setting posix ACLs
2017-01-26 08:24:37 +01:00
proc_namespace.c
read_write.c
iov_iter: kernel-doc import_iovec() and rw_copy_check_uvector()
2016-10-14 20:00:34 -04:00
readdir.c
select.c
fs/select: add vmalloc fallback for select(2)
2016-10-11 15:06:30 -07:00
seq_file.c
seq/proc: modify seq_put_decimal_[u]ll to take a const char *, not char
2016-10-07 18:46:30 -07:00
signalfd.c
splice.c
vfs: fix uninitialized flags in splice_to_pipe()
2017-02-23 17:44:35 +01:00
stack.c
stat.c
ufs: restore maintaining ->i_blocks
2017-06-14 15:06:01 +02:00
statfs.c
super.c
fs: Better permission checking for submounts
2017-03-15 10:02:44 +08:00
sync.c
timerfd.c
timerfd: Protect the might cancel mechanism proper
2017-05-08 07:47:54 +02:00
userfaultfd.c
mm: introduce fault_env
2016-07-26 16:19:19 -07:00
utimes.c
Merge remote-tracking branch 'jk/vfs' into work.misc
2016-10-08 11:06:08 -04:00
xattr.c
fs/xattr.c: zero out memory copied to userspace in getxattr
2017-05-20 14:28:39 +02:00