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