!6 fix Warn when large kernel timestamps cannot be handled
From: @xielhxie Reviewed-by: @liuzhiqiang26 Signed-off-by: @liuzhiqiang26
This commit is contained in:
commit
5025ac2be2
@ -0,0 +1,68 @@
|
|||||||
|
From 43b6e31f39edbe7de4f4feeef4d0cf6be093e021 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Kara <jack@suse.cz>
|
||||||
|
Date: Mon, 23 Nov 2020 17:12:27 +0100
|
||||||
|
Subject: [PATCH] quotaio_xfs: Warn when large kernel timestamps cannot be
|
||||||
|
handled
|
||||||
|
|
||||||
|
When time_t is 32-bit, warn if the kernel returns anything that cannot
|
||||||
|
fit in these time stamps. This also fixes a compilation warning that
|
||||||
|
shift exceeds data type size. Similarly when converting data to pass to
|
||||||
|
kernel, just avoid the pointless shift (generating compiler warning)
|
||||||
|
when time_t is 32-bit.
|
||||||
|
|
||||||
|
Reported-by: "Dmitry V. Levin" <ldv@altlinux.org>
|
||||||
|
Signed-off-by: Jan Kara <jack@suse.cz>
|
||||||
|
---
|
||||||
|
configure.ac | 2 ++
|
||||||
|
quotaio_xfs.c | 9 +++++++++
|
||||||
|
2 files changed, 11 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 2239b49..296b77a 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -82,6 +82,8 @@ AS_IF([test x"$enable_werror" != "xno"], [
|
||||||
|
])
|
||||||
|
AC_SUBST([WARN_CFLAGS])
|
||||||
|
|
||||||
|
+AC_CHECK_SIZEOF([time_t], [], [#include <time.h>])
|
||||||
|
+
|
||||||
|
# =========
|
||||||
|
# Find ldap
|
||||||
|
# =========
|
||||||
|
diff --git a/quotaio_xfs.c b/quotaio_xfs.c
|
||||||
|
index 2db1c0c..5abb2c2 100644
|
||||||
|
--- a/quotaio_xfs.c
|
||||||
|
+++ b/quotaio_xfs.c
|
||||||
|
@@ -45,8 +45,13 @@ report: xfs_report
|
||||||
|
static inline time_t xfs_kern2utildqblk_ts(const struct xfs_kern_dqblk *k,
|
||||||
|
__s32 timer, __s8 timer_hi)
|
||||||
|
{
|
||||||
|
+#if SIZEOF_TIME_T > 4
|
||||||
|
if (k->d_fieldmask & FS_DQ_BIGTIME)
|
||||||
|
return (__u32)timer | (__s64)timer_hi << 32;
|
||||||
|
+#else
|
||||||
|
+ if (k->d_fieldmask & FS_DQ_BIGTIME && timer_hi != 0)
|
||||||
|
+ errstr(_("Truncating kernel returned time stamp."));
|
||||||
|
+#endif
|
||||||
|
return timer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -54,10 +59,14 @@ static inline void xfs_util2kerndqblk_ts(const struct xfs_kern_dqblk *k,
|
||||||
|
__s32 *timer_lo, __s8 *timer_hi, time_t timer)
|
||||||
|
{
|
||||||
|
*timer_lo = timer;
|
||||||
|
+#if SIZEOF_TIME_T > 4
|
||||||
|
if (k->d_fieldmask & FS_DQ_BIGTIME)
|
||||||
|
*timer_hi = timer >> 32;
|
||||||
|
else
|
||||||
|
*timer_hi = 0;
|
||||||
|
+#else
|
||||||
|
+ *timer_hi = 0;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int want_bigtime(time_t timer)
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
Name: quota
|
Name: quota
|
||||||
Version: 4.06
|
Version: 4.06
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Release: 1
|
Release: 2
|
||||||
Summary: Linux Diskquota system as part of the Linux kernel
|
Summary: Linux Diskquota system as part of the Linux kernel
|
||||||
License: BSD and GPLv2 and GPLv2+ and LGPLv2+
|
License: BSD and GPLv2 and GPLv2+ and LGPLv2+
|
||||||
URL: http://sourceforge.net/projects/linuxquota/
|
URL: http://sourceforge.net/projects/linuxquota/
|
||||||
@ -14,6 +14,7 @@ Source4: rpc-rquotad.sysconfig
|
|||||||
|
|
||||||
Patch0: 0000-Limit-number-of-comparison-characters-to-4.patch
|
Patch0: 0000-Limit-number-of-comparison-characters-to-4.patch
|
||||||
Patch1: 0001-Limit-maximum-of-RPC-port.patch
|
Patch1: 0001-Limit-maximum-of-RPC-port.patch
|
||||||
|
Patch2: 0002-quotaio_xfs-Warn-when-large-kernel-timestamps-cannot.patch
|
||||||
|
|
||||||
BuildRequires: autoconf, automake, coreutils, rpcgen, systemd
|
BuildRequires: autoconf, automake, coreutils, rpcgen, systemd
|
||||||
BuildRequires: e2fsprogs-devel, gettext-devel, openldap-devel
|
BuildRequires: e2fsprogs-devel, gettext-devel, openldap-devel
|
||||||
@ -122,6 +123,9 @@ make check
|
|||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Mar 31 2021 xieliuhua <xieliuhua@huawei.com> - 1:4.06-2
|
||||||
|
- fix Warn when large kernel timestamps cannot be handled
|
||||||
|
|
||||||
* Thu Jan 14 2021 yanglongkang <yanglongkang@huawei.com> - 1:4.06-1
|
* Thu Jan 14 2021 yanglongkang <yanglongkang@huawei.com> - 1:4.06-1
|
||||||
- Upgrade to 4.06
|
- Upgrade to 4.06
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user