summaryrefslogtreecommitdiffstats
path: root/src/shared (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | shared/format-table: fix invalid freeZbigniew Jędrzejewski-Szmek2021-07-091-1/+1
|/ | | | Coverity CID#1458108.
* Merge pull request #20168 from poettering/signal-util-tweakYu Watanabe2021-07-091-18/+3
|\ | | | | generalize SIGINT handling in copy.c
| * copy: port over to pop_pending_signal()Lennart Poettering2021-07-081-18/+3
| |
* | Merge pull request #20167 from poettering/format-table-tweaksYu Watanabe2021-07-092-6/+75
|\ \ | | | | | | format-table: three new features
| * | format-table: teach table_hide_column_from_display() to accept multiple ↵Lennart Poettering2021-07-082-6/+22
| | | | | | | | | | | | | | | | | | arguments In case we want to hide multiple columns in one go, make that easy.
| * | format-table: add cell type for outputting 64bit values in hexLennart Poettering2021-07-082-0/+17
| | |
| * | format-table: add cell type for "mode_t" valuesLennart Poettering2021-07-082-0/+36
| |/
* | blockdev-util: add fd-based APIs for getting backing block device for fileLennart Poettering2021-07-082-4/+18
| |
* | Merge pull request #19995 from poettering/cred-toolLennart Poettering2021-07-086-22/+1040
|\ \ | | | | | | Add support for encrypted credentials
| * | pid1: add support for encrypted credentialsLennart Poettering2021-07-081-15/+28
| | |
| * | creds-util: add infra for encrypting/decrypting credentialsLennart Poettering2021-07-082-0/+907
| | |
| * | util: move src/basic/creds-util.[ch] → src/shared/Lennart Poettering2021-07-083-0/+72
| | | | | | | | | | | | | | | | | | | | | This is preparation for adding encryption support to the credentials logic, and we thus would like to add more deps. Let's hence move things from src/basic/ to src/shared, so that we can rely on the OpenSSL utilities already in src/shared.
| * | fs-util: add fd-based flavour of path_is_encrypted()Lennart Poettering2021-07-082-0/+17
| | |
| * | blockdev-util: add fd-based flavour of get_block_device()Lennart Poettering2021-07-082-7/+16
| |/
* / Mount encrypted swap partitions via gpt-autoHugo Osvaldo Barrera2021-07-081-1/+0
|/ | | | | | | | | | | | | | If the auto-discovered swap partition is LUKS encrypted, decrypt it automatically. This aligns with the Discoverable Partitions Specification, though I've also updated it to explicitly mention that LUKS is now supported here. Since systemd retries any key already in the kernel keyring, if the swap partition has the same passphrase as the root partition, the user won't be prompted a second time for a second passphrase. See https://github.com/systemd/systemd/issues/20019
* parse-socket-bind-item: fix typo in commentYu Watanabe2021-07-021-1/+5
| | | | | This also adds a blank line after each function declaration to follow our coding style.
* Merge pull request #20020 from anitazha/oomd_with_memZbigniew Jędrzejewski-Szmek2021-06-301-2/+2
|\ | | | | oomd: check that memory use also exceeds threshold before doing a swap kill
| * oomd: switch system context parsing to use /proc/meminfoAnita Zhang2021-06-301-2/+2
| | | | | | | | | | Makes it easier in the next commits to unify on one way to read swap and memory info.
* | core: when recursively bind-remounting nested mounts, use options from top oneLuca Boccassi2021-06-301-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When mount points are stacked, bind_remount_recursive_with_mountinfo() uses the existing mount options of the "lower" level mount (ie: the first one that was mounted on a mount point). But the actual mount point in use is the "top" one (ie: the last one that was mounted on a mount point), so in practice if the mount options are different between the layers, the bottom options are used by mistake on the top mount, which is not what we want. This is because libmount returns the "bottom" one first. If the hashmap returns EEXIST, which means the same key (path) with different value (options) is already present, update the hashmap instead of discarding the result. This way, the last/top mount options are always used when mounts are stacked on a mount point. This was found to cause problems as LXC version 4.x stacks two /sys mounts, the bottom one read-write and the top one read-only. systemd accidentally remounts the top-one read-write, breaking various expectations since a read-only /sys is the way we decide whether we are running in a container or not (in this particular case, networkd tests are broken as networkd expects to be able to modify network settings with a writable /sys). Future versions of LXC will no longer do this double-stacking, but we need to support running inside older versions too. This was triggered by https://github.com/systemd/systemd/commit/6720e356c137 as that causes a recursive remount of '/', which processes '/sys' as one of the submounts, from make_nosuid(). But it's likely that other combinations of options could trigger this as well. Before: root@systemd-debug:/# systemd-run -t --wait --property ProtectSystem=yes findmnt Running as unit: run-u9.service Press ^] three times within 1s to disconnect TTY. TARGET SOURCE FSTYPE OPTIONS / /dev/sda2[/var/lib/lxc/systemd-debug/rootfs] │ ext4 ro,nosuid,relatime,errors=remount-ro,stripe= ├─/dev none tmpfs rw,nosuid,relatime,size=492k,mode=755 │ ├─/dev/.lxc/proc proc proc rw,nosuid,relatime │ ├─/dev/.lxc/sys sys sysfs rw,nosuid,relatime │ ├─/dev/console devpts[/2] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptm │ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptm │ ├─/dev/ptmx devpts[/ptmx] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptm │ ├─/dev/tty1 devpts[/0] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptm │ ├─/dev/tty2 devpts[/1] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptm │ ├─/dev/tty3 devpts[/2] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptm │ ├─/dev/tty4 devpts[/3] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptm │ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev │ ├─/dev/hugepages hugetlbfs hugetlbfs rw,nosuid,relatime,pagesize=2M │ └─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime ├─/proc proc proc rw,nosuid,nodev,noexec,relatime │ ├─/proc/sys proc[/sys] proc ro,nosuid,nodev,noexec,relatime │ │ ├─/proc/sys/net proc[/sys/net] proc rw,nosuid,nodev,noexec,relatime │ │ └─/proc/sys/kernel/random/boot_id │ │ none[/.lxc-boot-id] tmpfs ro,nosuid,nodev,noexec,relatime,size=492k,mo │ └─/proc/sysrq-trigger proc[/sysrq-trigger] proc ro,nosuid,nodev,noexec,relatime ├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime │ └─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/devices/virtual/net sysfs sysfs rw,relatime │ │ └─/sys/devices/virtual/net │ │ sysfs[/devices/virtual/net] sysfs rw,nosuid,relatime │ ├─/sys/fs/fuse/connections fusectl fusectl rw,nosuid,nodev,noexec,relatime │ └─/sys/fs/cgroup cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,m ├─/run tmpfs tmpfs ro,nosuid,nodev,size=4912348k,nr_inodes=8192 │ ├─/run/credentials tmpfs[/systemd/inaccessible/dir] tmpfs ro,nosuid,nodev,noexec,size=4912348k,nr_inod │ └─/run/systemd/incoming tmpfs[/systemd/propagate/run-u9.service] │ tmpfs ro,nosuid,nodev,size=4912348k,nr_inodes=8192 ├─/tmp tmpfs tmpfs rw,nosuid,nodev,size=12280872k,nr_inodes=409 │ └─/tmp tmpfs[/systemd-private-b730df90da424397a3f246cb15dcdbb1-run-u9.service-K6EUwf/tmp] │ tmpfs rw,nosuid,nodev,size=12280872k,nr_inodes=409 └─/var/tmp /dev/sda2[/var/lib/lxc/systemd-debug/rootfs/var/tmp/systemd-private-b730df90da424397a3f246cb15dcdbb1-run-u9.service-vEHyRi/tmp] ext4 rw,nosuid,relatime,errors=remount-ro,stripe= Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 14.249s CPU time consumed: 37ms After: root@systemd-debug:/# systemd-run -t --wait --property ProtectSystem=yes findmnt Running as unit: run-u3.service Press ^] three times within 1s to disconnect TTY. TARGET SOURCE FSTYPE OPTIONS / /dev/sda2[/var/lib/lxc/systemd-debug/rootfs] │ ext4 rw,relatime,errors=remount-ro,stripe=32699 ├─/dev none tmpfs rw,relatime,size=492k,mode=755 │ ├─/dev/.lxc/proc proc proc rw,relatime │ ├─/dev/.lxc/sys sys sysfs rw,relatime │ ├─/dev/console devpts[/2] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode │ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode │ ├─/dev/ptmx devpts[/ptmx] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode │ ├─/dev/tty1 devpts[/0] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode │ ├─/dev/tty2 devpts[/1] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode │ ├─/dev/tty3 devpts[/2] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode │ ├─/dev/tty4 devpts[/3] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode │ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev │ ├─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,pagesize=2M │ └─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime ├─/proc proc proc rw,nosuid,nodev,noexec,relatime │ ├─/proc/sys proc[/sys] proc ro,nosuid,nodev,noexec,relatime │ │ ├─/proc/sys/net proc[/sys/net] proc rw,nosuid,nodev,noexec,relatime │ │ └─/proc/sys/kernel/random/boot_id │ │ none[/.lxc-boot-id] tmpfs ro,nosuid,nodev,noexec,relatime,size=492k,mode=75 │ └─/proc/sysrq-trigger proc[/sysrq-trigger] proc ro,nosuid,nodev,noexec,relatime ├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime │ └─/sys sysfs sysfs ro,nosuid,nodev,noexec,relatime │ ├─/sys/devices/virtual/net sysfs sysfs rw,relatime │ │ └─/sys/devices/virtual/net │ │ sysfs[/devices/virtual/net] sysfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/fs/fuse/connections fusectl fusectl rw,nosuid,nodev,noexec,relatime │ └─/sys/fs/cgroup cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory ├─/run tmpfs tmpfs rw,nosuid,nodev,size=4912348k,nr_inodes=819200,mo │ ├─/run/credentials tmpfs[/systemd/inaccessible/dir] │ │ tmpfs ro,nosuid,nodev,noexec,size=4912348k,nr_inodes=81 │ └─/run/systemd/incoming tmpfs[/systemd/propagate/run-u3.service] │ tmpfs ro,nosuid,nodev,size=4912348k,nr_inodes=819200,mo ├─/tmp tmpfs tmpfs rw,nosuid,nodev,size=12280872k,nr_inodes=409600 ├─/boot /dev/sda2[/var/lib/lxc/systemd-debug/rootfs/boot] │ ext4 ro,relatime,errors=remount-ro,stripe=32699 └─/usr /dev/sda2[/var/lib/lxc/systemd-debug/rootfs/usr] ext4 ro,relatime,errors=remount-ro,stripe=32699 Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 14ms CPU time consumed: 5ms Host (LXC): root@systemd-debug:/# findmnt TARGET SOURCE FSTYPE OPTIONS / /dev/sda2[/var/lib/lxc/systemd-debug/rootfs] │ ext4 rw,relatime,errors=remount-ro,stripe=32699 ├─/run tmpfs tmpfs rw,nosuid,nodev,size=4912348k,nr_inodes=819200,mode=755 ├─/tmp tmpfs tmpfs rw,nosuid,nodev,size=12280872k,nr_inodes=409600 ├─/dev none tmpfs rw,relatime,size=492k,mode=755 │ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,ma │ ├─/dev/ptmx devpts[/ptmx] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,ma │ ├─/dev/tty1 devpts[/0] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,ma │ ├─/dev/tty2 devpts[/1] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,ma │ ├─/dev/tty3 devpts[/2] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,ma │ ├─/dev/tty4 devpts[/3] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,ma │ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev │ ├─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,pagesize=2M │ ├─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime │ ├─/dev/console devpts[/2] devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 │ ├─/dev/.lxc/proc proc proc rw,relatime │ └─/dev/.lxc/sys sys sysfs rw,relatime ├─/proc proc proc rw,nosuid,nodev,noexec,relatime │ ├─/proc/sys proc[/sys] proc ro,nosuid,nodev,noexec,relatime │ │ ├─/proc/sys/kernel/random/boot_id │ │ │ none[/.lxc-boot-id] tmpfs ro,nosuid,nodev,noexec,relatime,size=492k,mode=755 │ │ └─/proc/sys/net proc[/sys/net] proc rw,nosuid,nodev,noexec,relatime │ └─/proc/sysrq-trigger proc[/sysrq-trigger] proc ro,nosuid,nodev,noexec,relatime └─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime └─/sys sysfs sysfs ro,nosuid,nodev,noexec,relatime ├─/sys/devices/virtual/net sysfs sysfs rw,relatime │ └─/sys/devices/virtual/net │ sysfs[/devices/virtual/net] │ sysfs rw,nosuid,nodev,noexec,relatime ├─/sys/fs/fuse/connections fusectl fusectl rw,nosuid,nodev,noexec,relatime └─/sys/fs/cgroup cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recurs Fixes https://github.com/systemd/systemd/issues/20032
* | Revert "Introduce ExitType"Zbigniew Jędrzejewski-Szmek2021-06-301-1/+0
| | | | | | | | | | | | | | | | | | | | | | This reverts commit cb0e818f7cc2499d81ef143e5acaa00c6e684711. After this was merged, some design and implementation issues were discovered, see the discussion in #18782 and #19385. They certainly can be fixed, but so far nobody has stepped up, and we're nearing a release. Hopefully, this feature can be merged again after a rework. Fixes #19345.
* | Merge pull request #20074 from yuwata/fix-typoZbigniew Jędrzejewski-Szmek2021-06-305-6/+6
|\ \ | | | | | | tree-wide: fix typo
| * | tree-wide: "a" -> "an"Yu Watanabe2021-06-305-6/+6
| | |
* | | dbus: extend SocketBind{Allow|Deny}= with ip protoJulia Kartseva2021-06-301-31/+7
| | |
* | | shared: add parser for SocketBind{Allow|Deny}=Julia Kartseva2021-06-303-0/+160
| | | | | | | | | | | | | | | | | | | | | Parse address family, ip protocol and ports, any of them can be optional. If neither is specified, a special value 'any' is expected. Helper is placed in shared to be reused in both fragment and dbus. Add unit tests with valid and invalid examples.
* | | shared: add ip_protocol_{from|to}_tcp_udp helpersJulia Kartseva2021-06-292-0/+13
|/ / | | | | | | | | | | | | | | | | | | | | Thin wrappers of ip_protocol_{from|to}_name targeting IPPROTO_TCP and IPPROTO_UDP only. Used to parse IP protocol configuration restricted only to TCP and UDP, e.g. in SocketBind{Allow|Deny}= unit property. These helpers are inspired by af_{from|to}_ipv4_ipv6 and potentially extendable with other IP protocols if there is a use-case to expose them.
* | remove a left-over breakDavid Tardon2021-06-251-1/+0
| | | | | | | | | | | | | | By the "same logic as above...", we want to continue to fallback here, but the break prohibits that. This is a follow-up for ee1aa61c4710ae567a2b844e0f0bb8cb0456ab8c .
* | Merge pull request #19312 from yuwata/udev-escape-slash-nvmeZbigniew Jędrzejewski-Szmek2021-06-253-1/+20
|\ \ | | | | | | udev: make OPTIONS="string_escape=replace" take effect on ENV{key}= assiginment
| * | udev: introduce new netif naming scheme flag to strictly replace ifnameYu Watanabe2021-06-231-1/+2
| | |
| * | udev-util: introduce udev_replace_ifname()Yu Watanabe2021-06-232-0/+18
| |/
* | Merge pull request #19941 from bluca/condition_os_releaseZbigniew Jędrzejewski-Szmek2021-06-252-0/+61
|\ \ | | | | | | core: add ConditionOSRelease= directive
| * | core: add ConditionOSRelease= directiveLuca Boccassi2021-06-242-0/+61
| |/
* | tree-wide: make specifier expansion --root= awareLennart Poettering2021-06-246-85/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes repart's, systemctl's, sysusers' and tmpfiles' specifier expansion to honour the root dir specified with --root=. This is relevant for specifiers such as %m, %o, … which are directly sourced from files on disk. This doesn't try to be overly smart: specifiers referring to runtime concepts (i.e. boot ID, architecture, hostname) rather than files on the medium are left as is. There's certainly a point to be made that they should fail in case --root= is specified, but I am not entirely convinced about that, and it's certainly something we can look into later if there's reason to. I wondered for a while how to hook this up best, but given that quite a large number of specifiers resolve to data from files on disks, and most of our tools needs this, I ultimately decided to make the root dir a first class parameter to specifier_printf(). Replaces: #16187 Fixes: #16183
* | Merge pull request #20004 from yuwata/readdir-ensure-typeZbigniew Jędrzejewski-Szmek2021-06-243-13/+0
|\ \ | | | | | | dirent-util: introduce readdir_ensure_type()
| * | dirent-util: use readdir_ensure_type() in readdir_no_dot() and FOREACH_DIRENT()Yu Watanabe2021-06-233-13/+0
| |/
* | openssl-util: include the headers the file actually uses definitions fromLennart Poettering2021-06-241-1/+2
| |
* | shared/selinux-util: rework switching of the getenforce() functionZbigniew Jędrzejewski-Szmek2021-06-241-12/+13
| | | | | | | | | | | | | | The approach with function pointer was neat, but it gets in the way when we want to resolve the symbol dynamically: static initialization is not possible. It also makes the code more complicated than necessary. In this case, a simple boolean is sufficient.
* | shared/dlfcn-util: add sentinel helper or for dlsym_many_or_warn()Zbigniew Jędrzejewski-Szmek2021-06-243-4/+5
| | | | | | | | I didn't do this before to avoid churn in all the users.
* | shared/tpm2-util: simplify and convert to the new helperZbigniew Jędrzejewski-Szmek2021-06-241-75/+29
| | | | | | | | | | | | The function would return 0 or 3. I don't think the return code was used for anything, so let's avoid the explicit calculation and return 0 or 1.
* | various: convert to the new dlopen_or_warn() helperZbigniew Jędrzejewski-Szmek2021-06-246-137/+21
| |
* | dlfcn-util: invert function naming and add helper that does the whole jobZbigniew Jędrzejewski-Szmek2021-06-249-35/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | We warn when the operation fails, not when it succeeds. Hence this should be "<do>_or_<handle failure>", not "<do>_and_<handle failure>". We *could* use whatever convention we want, but rust and perl are rather consistent in using the logical convention. We don't care about perl that much, but having a naming convention inverted wrt. rust would be rather confusing. Also, pretty much every implementation does similar steps, so add a nice wrapper which combines opening of the library and loading of the symbols. Also add missing sentinel attribute in dlopen_or_warn().
* | basic,shared: move a bunch of files to src/shared/Zbigniew Jędrzejewski-Szmek2021-06-2420-0/+5988
| | | | | | | | | | | | | | | | | | | | | | | | The goal is to move everything that requires selinux or smack away from src/basic/. This means that src/basic/label.[ch] must move, which implies btrfs-util.[ch], copy.[ch], and a bunch of other files which form a cluster of internal use. This is just moving text around, so there should be no functional difference. test-blockdev-util is new, because path_is_encrypted() is moved to blockdev-util.c, and so far we didn't have any tests for code there.
* | basic,shared: move dlopen helpers to shared/Zbigniew Jędrzejewski-Szmek2021-06-243-0/+58
| | | | | | | | | | | | | | | | This was added in 88d775b734644f26fb490836769c2bc275498fde, with the apparent intent of using in shared/ and the rest of our code. It doesn't matter much for our code, since libdl is part of glibc anyway, but moving it removes one linkage from libsystemd. (libshared was already linking to libdl explicitly).
* | Move hwdb creation code to src/shared/Zbigniew Jędrzejewski-Szmek2021-06-243-0/+705
| | | | | | | | | | hwdb_update() is the main entry point, and it is called from "udevadm hwdb" and "systemd-hwdb", so it belongs in shared/.
* | basic,shared: move quota-util.[ch] to src/shared/Zbigniew Jędrzejewski-Szmek2021-06-243-0/+62
| | | | | | | | No need for this to in basic/.
* | basic: drop one btrfs-related function and move anotherZbigniew Jędrzejewski-Szmek2021-06-242-6/+10
| | | | | | | | | | This will become useful later, it is the first step to moving btrfs-util.[ch] out of src/basic/.
* | basic,shared: move make_mount_point_inode_*() to shared/Zbigniew Jędrzejewski-Szmek2021-06-232-0/+28
| | | | | | | | Those pull in selinux for labelling, and we should avoid selinux in basic/.
* | meson: sort file listZbigniew Jędrzejewski-Szmek2021-06-231-4/+4
|/ | | | At least emacs thinks this is the right way.
* test-mount-util: add output test for mount_flags_to_string()Zbigniew Jędrzejewski-Szmek2021-06-222-1/+2
|
* mount-util: add one more assertionYu Watanabe2021-06-221-0/+2
|
* mount-util: use EXTRACT_KEEP_QUOTE to handle mount optionsYu Watanabe2021-06-211-1/+1
| | | | Otherwise, the quotes which wrap SELinux options are dropped.