blob: 0c478f622499d61fc79f8fae5ed18069ffc9f74c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
From 061d1a51097c3c025ff46173f10aa135f9a610d4 Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
Date: Thu, 22 Mar 2018 14:05:17 +0100
Subject: libmount: include sys/mount.h only if necessary
Addresses: https://github.com/systemd/systemd/issues/8507
Signed-off-by: Karel Zak <kzak@redhat.com>
---
libmount/src/libmount.h.in | 9 ++++++++-
sys-utils/fstrim.c | 4 +---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in
index 8f323fcbf..11fd759fa 100644
--- a/libmount/src/libmount.h.in
+++ b/libmount/src/libmount.h.in
@@ -28,7 +28,14 @@ extern "C" {
#include <stdio.h>
#include <mntent.h>
#include <sys/types.h>
-#include <sys/mount.h>
+
+/* Make sure libc MS_* definitions are used by default. Note that MS_* flags
+ * may be already defined by linux/fs.h or another file -- in this case we
+ * don't want to include sys/mount.h at all to avoid collisions.
+ */
+#ifndef MS_RDONLY
+# include <sys/mount.h>
+#endif
#define LIBMOUNT_VERSION "@LIBMOUNT_VERSION@"
#define LIBMOUNT_MAJOR_VERSION @LIBMOUNT_MAJOR_VERSION@
diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c
index 53ac594c0..ce52063e1 100644
--- a/sys-utils/fstrim.c
+++ b/sys-utils/fstrim.c
@@ -35,6 +35,7 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
+#include <linux/fs.h>
#include "nls.h"
#include "strutils.h"
@@ -46,9 +47,6 @@
#include <libmount.h>
-/* We cannot include linux/fs.h due to MS_* constants collision with
- * sys/mount.h (and libmount.h)
- */
#ifndef FITRIM
struct fstrim_range {
uint64_t start;
|