lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <52615CC0.7010007@redhat.com>
Date:	Fri, 18 Oct 2013 11:07:28 -0500
From:	Eric Sandeen <sandeen@...hat.com>
To:	ext4 development <linux-ext4@...r.kernel.org>
Subject: [PATCH] e2fsprogs: fix build w/o quota

The next branch fails a few ways if quota isn't enabled;
for starters, libquota build was turned off after commit

43075b4 quota: fix disabling quota, add quota tests

because now we don't build libquota, but still depend on it.

Using @QUOTA_CMT@ to comment out those libs fixes things
as far as deps, but then all calls to quota functions fail,
of course.

So this is a very quick & dirty stab at providing stubs
for those functions when quota is disabled.

Signed-off-by: Eric Sandeen <sandeen@...hat.com>
---

Note - Compile-tested only, with & without quota.

diff --git a/MCONFIG.in b/MCONFIG.in
index fa2b03e..e6be05c 100644
--- a/MCONFIG.in
+++ b/MCONFIG.in
@@ -93,13 +93,13 @@ LIBCOM_ERR = $(LIB)/libcom_err@..._EXT@ @PRIVATE_LIBS_CMT@ @SEM_INIT_LIB@
 LIBE2P = $(LIB)/libe2p@..._EXT@
 LIBEXT2FS = $(LIB)/libext2fs@..._EXT@
 LIBUUID = @LIBUUID@ @SOCKET_LIB@
-LIBQUOTA = @STATIC_LIBQUOTA@
+@...TA_CMT@...QUOTA = @STATIC_LIBQUOTA@
 LIBBLKID = @LIBBLKID@ @PRIVATE_LIBS_CMT@ $(LIBUUID)
 LIBINTL = @LIBINTL@
 DEPLIBSS = $(LIB)/libss@..._EXT@
 DEPLIBCOM_ERR = $(LIB)/libcom_err@..._EXT@
 DEPLIBUUID = @DEPLIBUUID@
-DEPLIBQUOTA = @DEPSTATIC_LIBQUOTA@
+@...TA_CMT@...LIBQUOTA = @DEPSTATIC_LIBQUOTA@
 DEPLIBBLKID = @DEPLIBBLKID@ @PRIVATE_LIBS_CMT@ $(DEPLIBUUID)
 
 STATIC_LIBSS = $(LIB)/libss@...TIC_LIB_EXT@ @DLOPEN_LIB@
@@ -107,12 +107,12 @@ STATIC_LIBCOM_ERR = $(LIB)/libcom_err@...TIC_LIB_EXT@ @SEM_INIT_LIB@
 STATIC_LIBE2P = $(LIB)/libe2p@...TIC_LIB_EXT@
 STATIC_LIBEXT2FS = $(LIB)/libext2fs@...TIC_LIB_EXT@
 STATIC_LIBUUID = @STATIC_LIBUUID@ @SOCKET_LIB@
-STATIC_LIBQUOTA = @STATIC_LIBQUOTA@
+@...TA_CMT@...TIC_LIBQUOTA = @STATIC_LIBQUOTA@
 STATIC_LIBBLKID = @STATIC_LIBBLKID@ $(STATIC_LIBUUID)
 DEPSTATIC_LIBSS = $(LIB)/libss@...TIC_LIB_EXT@
 DEPSTATIC_LIBCOM_ERR = $(LIB)/libcom_err@...TIC_LIB_EXT@
 DEPSTATIC_LIBUUID = @DEPSTATIC_LIBUUID@
-DEPSTATIC_LIBQUOTA = @DEPSTATIC_LIBQUOTA@
+@...TA_CMT@...STATIC_LIBQUOTA = @DEPSTATIC_LIBQUOTA@
 DEPSTATIC_LIBBLKID = @DEPSTATIC_LIBBLKID@ $(DEPSTATIC_LIBUUID)
 
 PROFILED_LIBSS = $(LIB)/libss@...FILED_LIB_EXT@ @DLOPEN_LIB@
@@ -120,12 +120,12 @@ PROFILED_LIBCOM_ERR = $(LIB)/libcom_err@...FILED_LIB_EXT@ @SEM_INIT_LIB@
 PROFILED_LIBE2P = $(LIB)/libe2p@...FILED_LIB_EXT@
 PROFILED_LIBEXT2FS = $(LIB)/libext2fs@...FILED_LIB_EXT@
 PROFILED_LIBUUID = @PROFILED_LIBUUID@ @SOCKET_LIB@
-PROFILED_LIBQUOTA = @PROFILED_LIBQUOTA@
+@...TA_CMT@...FILED_LIBQUOTA = @PROFILED_LIBQUOTA@
 PROFILED_LIBBLKID = @PROFILED_LIBBLKID@ $(PROFILED_LIBUUID)
 DEPPROFILED_LIBSS = $(LIB)/libss@...FILED_LIB_EXT@
 DEPPROFILED_LIBCOM_ERR = $(LIB)/libcom_err@...FILED_LIB_EXT@
 DEPPROFILED_LIBUUID = @PROFILED_LIBUUID@
-DEPPROFILED_LIBQUOTA = @PROFILED_LIBQUOTA@
+@...TA_CMT@...PROFILED_LIBQUOTA = @PROFILED_LIBQUOTA@
 DEPPROFILED_LIBBLKID = @PROFILED_LIBBLKID@ $(DEPPROFILED_LIBUUID)
 
 #
diff --git a/lib/quota/mkquota.h b/lib/quota/mkquota.h
index ee15071..2d5d927 100644
--- a/lib/quota/mkquota.h
+++ b/lib/quota/mkquota.h
@@ -43,6 +43,7 @@ struct quota_ctx {
 };
 
 /* In mkquota.c */
+#ifdef CONFIG_QUOTA
 errcode_t quota_init_context(quota_ctx_t *qctx, ext2_filsys fs, int qtype);
 void quota_data_inodes(quota_ctx_t qctx, struct ext2_inode *inode, ext2_ino_t ino,
 		int adjust);
@@ -60,5 +61,81 @@ int quota_file_exists(ext2_filsys fs, int qtype, int fmt);
 void quota_set_sb_inum(ext2_filsys fs, ext2_ino_t ino, int qtype);
 errcode_t quota_compare_and_update(quota_ctx_t qctx, int qtype,
 				   int *usage_inconsistent);
+#else
+static inline
+errcode_t quota_init_context(quota_ctx_t *qctx, ext2_filsys fs, int qtype)
+{
+	return 0;
+}
 
+static inline
+void quota_data_inodes(quota_ctx_t qctx, struct ext2_inode *inode, ext2_ino_t ino,
+		int adjust)
+{
+	return; 
+}
+
+static inline
+void quota_data_add(quota_ctx_t qctx, struct ext2_inode *inode, ext2_ino_t ino,
+		    qsize_t space)
+{
+	return;
+}
+
+static inline
+void quota_data_sub(quota_ctx_t qctx, struct ext2_inode *inode, ext2_ino_t ino,
+		    qsize_t space)
+{
+	return;
+}
+
+static inline
+errcode_t quota_write_inode(quota_ctx_t qctx, int qtype)
+{
+	return 0;
+}
+
+static inline
+errcode_t quota_update_limits(quota_ctx_t qctx, ext2_ino_t qf_ino, int type)
+{
+	return 0;
+}
+
+static inline
+errcode_t quota_compute_usage(quota_ctx_t qctx)
+{
+	return 0;
+}
+
+static inline
+void quota_release_context(quota_ctx_t *qctx)
+{
+	return;
+}
+
+static inline
+errcode_t quota_remove_inode(ext2_filsys fs, int qtype)
+{
+	return 0;
+}
+
+static inline
+int quota_file_exists(ext2_filsys fs, int qtype, int fmt)
+{
+	return 0;
+}
+
+static inline
+void quota_set_sb_inum(ext2_filsys fs, ext2_ino_t ino, int qtype)
+{
+	return;
+}
+
+static inline
+errcode_t quota_compare_and_update(quota_ctx_t qctx, int qtype,
+				   int *usage_inconsistent)
+{
+	return 0;
+}
+#endif
 #endif  /* __QUOTA_QUOTAIO_H__ */
diff --git a/lib/quota/quotaio.h b/lib/quota/quotaio.h
index 1c062f1..c2d7a41 100644
--- a/lib/quota/quotaio.h
+++ b/lib/quota/quotaio.h
@@ -158,8 +158,24 @@ void update_grace_times(struct dquot *q);
    than maxlen of extensions[] and fmtnames[] (plus 2) found in quotaio.c */
 #define QUOTA_NAME_LEN 16
 
+#ifdef CONFIG_QUOTA
 const char *quota_get_qf_name(int type, int fmt, char *buf);
 const char *quota_get_qf_path(const char *mntpt, int qtype, int fmt,
 			      char *path_buf, size_t path_buf_size);
+#else
+static inline
+const char *quota_get_qf_name(int type, int fmt, char *buf)
+{
+	return NULL;
+}
+
+static inline
+const char *quota_get_qf_path(const char *mntpt, int qtype, int fmt,
+			      char *path_buf, size_t path_buf_size)
+{
+	return NULL;
+}
+#endif
+
 
 #endif /* GUARD_QUOTAIO_H */

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists