Re: [PATCH 1/3] isofs: Refuse RW mount of the filesystem instead of making it RO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri 26-07-13 00:28:11, Jan Kara wrote:
> Refuse RW mount of isofs filesystem. So far we just silently changed it
> to RO mount but when the media is writeable, block layer won't notice
> this change and thus will think device is used RW and will block eject
> button of the drive. That is unexpected by users because for
> non-writeable media eject button works just fine.
> 
> Userspace mount(8) command handles this just fine and retries mounting
> with MS_RDONLY set so userspace shouldn't see any regression.  Plus any
> tool mounting isofs is likely confronted with the case of read-only
> media where block layer already refuses to mount the filesystem without
> MS_RDONLY set so our behavior shouldn't be anything new for it.
  OK, since noone objected to this patch series, I've merged the patches to
for_next branch in my tree.

								Honza

> 
> Reported-by: Hui Wang <hui.wang@xxxxxxxxxxxxx>
> Signed-off-by: Jan Kara <jack@xxxxxxx>
> ---
>  fs/isofs/inode.c | 16 +++++-----------
>  1 file changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
> index c348d6d..e5d408a 100644
> --- a/fs/isofs/inode.c
> +++ b/fs/isofs/inode.c
> @@ -117,8 +117,8 @@ static void destroy_inodecache(void)
>  
>  static int isofs_remount(struct super_block *sb, int *flags, char *data)
>  {
> -	/* we probably want a lot more here */
> -	*flags |= MS_RDONLY;
> +	if (!(*flags & MS_RDONLY))
> +		return -EROFS;
>  	return 0;
>  }
>  
> @@ -763,15 +763,6 @@ root_found:
>  	 */
>  	s->s_maxbytes = 0x80000000000LL;
>  
> -	/*
> -	 * The CDROM is read-only, has no nodes (devices) on it, and since
> -	 * all of the files appear to be owned by root, we really do not want
> -	 * to allow suid.  (suid or devices will not show up unless we have
> -	 * Rock Ridge extensions)
> -	 */
> -
> -	s->s_flags |= MS_RDONLY /* | MS_NODEV | MS_NOSUID */;
> -
>  	/* Set this for reference. Its not currently used except on write
>  	   which we don't have .. */
>  
> @@ -1530,6 +1521,9 @@ struct inode *isofs_iget(struct super_block *sb,
>  static struct dentry *isofs_mount(struct file_system_type *fs_type,
>  	int flags, const char *dev_name, void *data)
>  {
> +	/* We don't support read-write mounts */
> +	if (!(flags & MS_RDONLY))
> +		return ERR_PTR(-EACCES);
>  	return mount_bdev(fs_type, flags, dev_name, data, isofs_fill_super);
>  }
>  
> -- 
> 1.8.1.4
> 
-- 
Jan Kara <jack@xxxxxxx>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux