- else
- mp->mnt_flag &= ~MNT_RDONLY;
- if (uap->flags & MNT_NOSUID)
- mp->mnt_flag |= MNT_NOSUID;
- else
- mp->mnt_flag &= ~MNT_NOSUID;
- if (uap->flags & MNT_NOEXEC)
- mp->mnt_flag |= MNT_NOEXEC;
- else
- mp->mnt_flag &= ~MNT_NOEXEC;
- if (uap->flags & MNT_NODEV)
- mp->mnt_flag |= MNT_NODEV;
- else
- mp->mnt_flag &= ~MNT_NODEV;
- if (uap->flags & MNT_SYNCHRONOUS)
- mp->mnt_flag |= MNT_SYNCHRONOUS;
- else
- mp->mnt_flag &= ~MNT_SYNCHRONOUS;
- if (uap->flags & MNT_UNION)
- mp->mnt_flag |= MNT_UNION;
- else
- mp->mnt_flag &= ~MNT_UNION;
+ else if (mp->mnt_flag & MNT_RDONLY)
+ mp->mnt_flag |= MNT_WANTRDWR;
+ mp->mnt_flag &=~ (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV |
+ MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC);
+ mp->mnt_flag |= uap->flags & (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV |
+ MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC);