mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
vdso/gettimeofday: Verify COMPAT_32BIT_TIME interactions
If CONFIG_COMPAT_32BIT_TIME is disabled then the vDSO should not provide any 32-bit time related functionality. Add some build-time validations to make sure the architecture-specific glue satisfies this requirement. Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Link: https://patch.msgid.link/20260702-vdso-compat_32bit_time-v3-9-db9f36d8d432@linutronix.de
This commit is contained in:
committed by
Thomas Gleixner
parent
2700297b69
commit
369cecd238
@@ -25,6 +25,8 @@
|
|||||||
*/
|
*/
|
||||||
#include <asm/vdso/gettimeofday.h>
|
#include <asm/vdso/gettimeofday.h>
|
||||||
|
|
||||||
|
#include <linux/build_bug.h>
|
||||||
|
|
||||||
/* Bring in default accessors */
|
/* Bring in default accessors */
|
||||||
#include <vdso/vsyscall.h>
|
#include <vdso/vsyscall.h>
|
||||||
|
|
||||||
@@ -325,6 +327,8 @@ __cvdso_clock_gettime32_data(const struct vdso_time_data *vd, clockid_t clock,
|
|||||||
struct __kernel_timespec ts;
|
struct __kernel_timespec ts;
|
||||||
bool ok;
|
bool ok;
|
||||||
|
|
||||||
|
BUILD_BUG_ON(!IS_ENABLED(CONFIG_COMPAT_32BIT_TIME));
|
||||||
|
|
||||||
ok = __cvdso_clock_gettime_common(vd, clock, &ts);
|
ok = __cvdso_clock_gettime_common(vd, clock, &ts);
|
||||||
|
|
||||||
if (unlikely(!ok))
|
if (unlikely(!ok))
|
||||||
@@ -354,6 +358,8 @@ __cvdso_gettimeofday_data(const struct vdso_time_data *vd,
|
|||||||
BUILD_BUG();
|
BUILD_BUG();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
BUILD_BUG_ON(sizeof(tv->tv_sec) != 8 && !IS_ENABLED(CONFIG_COMPAT_32BIT_TIME));
|
||||||
|
|
||||||
if (likely(tv != NULL)) {
|
if (likely(tv != NULL)) {
|
||||||
struct __kernel_timespec ts;
|
struct __kernel_timespec ts;
|
||||||
|
|
||||||
@@ -392,6 +398,8 @@ __cvdso_time_data(const struct vdso_time_data *vd, __kernel_old_time_t *time)
|
|||||||
BUILD_BUG();
|
BUILD_BUG();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
BUILD_BUG_ON(sizeof(*time) != 8 && !IS_ENABLED(CONFIG_COMPAT_32BIT_TIME));
|
||||||
|
|
||||||
if (vdso_is_timens_clock(vc)) {
|
if (vdso_is_timens_clock(vc)) {
|
||||||
vd = vdso_timens_data(vd);
|
vd = vdso_timens_data(vd);
|
||||||
vc = vd->clock_data;
|
vc = vd->clock_data;
|
||||||
@@ -481,6 +489,8 @@ __cvdso_clock_getres_time32_data(const struct vdso_time_data *vd, clockid_t cloc
|
|||||||
struct __kernel_timespec ts;
|
struct __kernel_timespec ts;
|
||||||
bool ok;
|
bool ok;
|
||||||
|
|
||||||
|
BUILD_BUG_ON(!IS_ENABLED(CONFIG_COMPAT_32BIT_TIME));
|
||||||
|
|
||||||
ok = __cvdso_clock_getres_common(vd, clock, &ts);
|
ok = __cvdso_clock_getres_common(vd, clock, &ts);
|
||||||
|
|
||||||
if (unlikely(!ok))
|
if (unlikely(!ok))
|
||||||
|
|||||||
Reference in New Issue
Block a user