linux/drivers/input/misc
Deepa Dinamani 152194fe9c Input: extend usable life of event timestamps to 2106 on 32 bit systems
The input events use struct timeval to store event time, unfortunately
this structure is not y2038 safe and is being replaced in kernel with
y2038 safe structures.

Because of ABI concerns we can not change the size or the layout of
structure input_event, so we opt to re-interpreting the 'seconds' part
of timestamp as an unsigned value, effectively doubling the range of
values, to year 2106.

Newer glibc that has support for 32 bit applications to use 64 bit
time_t supplies __USE_TIME_BITS64 define [1], that we can use to present
the userspace with updated input_event layout. The updated layout will
cause the compile time breakage, alerting applications and distributions
maintainers to the issue. Existing 32 binaries will continue working
without any changes until 2038.

Ultimately userspace applications should switch to using monotonic or
boot time clocks, as realtime clock is not very well suited for input
event timestamps as it can go backwards (see a80b83b7b8 "Input: evdev -
add CLOCK_BOOTTIME support" by by John Stultz). With monotonic clock the
practical range of reported times will always fit into the pair of 32
bit values, as we do not expect any system to stay up for a hundred
years without a single reboot.

[1] https://sourceware.org/glibc/wiki/Y2038ProofnessDesign

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Patchwork-Id: 10148083
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2018-01-09 16:40:30 -08:00
..
88pm80x_onkey.c Input: misc - drop unnecessary calls to device_init_wakeup 2017-01-21 23:53:21 -08:00
88pm860x_onkey.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-12-17 10:06:02 -08:00
ab8500-ponkey.c Input: ab8500-ponkey - drop unnecessary call to platform_set_drvdata 2017-01-18 11:49:19 -08:00
ad714x-i2c.c Input: ad714x - convert to using managed resources 2015-09-19 11:42:39 -07:00
ad714x-spi.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2015-11-06 11:57:41 -08:00
ad714x.c Input: ad714x - convert to using managed resources 2015-09-19 11:42:39 -07:00
ad714x.h Input: ad714x - convert to using managed resources 2015-09-19 11:42:39 -07:00
adxl34x-i2c.c Input: adxl34x - make it enumerable in ACPI environment 2017-01-03 12:33:12 -08:00
adxl34x-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
adxl34x.c Input: adxl34x - do not treat FIFO_MODE() as boolean 2017-09-20 12:15:58 -07:00
adxl34x.h
apanel.c Input: convert remaining uses of pr_warning to pr_warn 2017-03-17 17:25:02 -07:00
arizona-haptics.c Linux 4.10-rc5 2017-01-24 12:37:43 -08:00
ati_remote2.c Input: ati_remote2 - constify usb_device_id 2017-08-14 22:12:06 -07:00
atlas_btns.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
atmel_captouch.c Input: misc - drop calls to platform_set_drvdata and i2c_set_clientdata 2017-01-21 23:51:51 -08:00
axp20x-pek.c Input: axp20x-pek - fix module not auto-loading for axp221 pek 2017-10-19 16:50:28 -07:00
bfin_rotary.c Input: bfin_rotary - switch to using devm_add_action_or_reset() 2017-01-18 11:49:11 -08:00
bma150.c Input: bma150 - remove support for bma150 2017-04-01 11:44:53 -07:00
cm109.c Input: cm109 - validate number of endpoints before using them 2017-03-16 13:56:50 -07:00
cma3000_d0x_i2c.c Input: drop owner assignment from i2c_driver 2015-07-17 16:57:00 -07:00
cma3000_d0x.c
cma3000_d0x.h
cobalt_btns.c
cpcap-pwrbutton.c input: cpcap-pwrbutton: New driver 2017-04-11 15:18:09 +01:00
da9052_onkey.c
da9055_onkey.c
da9063_onkey.c Input: misc - drop calls to platform_set_drvdata and i2c_set_clientdata 2017-01-21 23:51:51 -08:00
dm355evm_keys.c mfd: dm355evm_msp: Move header file out of I2C realm 2017-08-15 08:06:14 +01:00
drv260x.c Input: drv260x - remove OF dependency 2017-03-09 10:00:14 -08:00
drv2665.c Input: drv2665 - fix misuse of regmap_update_bits 2016-11-30 09:03:44 -08:00
drv2667.c Input: drv2667 - fix misuse of regmap_update_bits 2016-11-30 09:03:45 -08:00
e3x0-button.c Input: misc - drop empty remove functions 2017-01-21 23:53:34 -08:00
gp2ap002a00f.c Input: misc - drop unnecessary calls to device_init_wakeup 2017-01-21 23:53:21 -08:00
gpio_decoder.c Input: gpio_decoder - drop unnecessary call to platform_set_drvdata 2017-01-18 11:49:13 -08:00
gpio-beeper.c Input: improve usage of gpiod API 2015-06-16 17:09:14 -07:00
hisi_powerkey.c Input: misc - drop empty remove functions 2017-01-21 23:53:34 -08:00
hp_sdc_rtc.c Input: hp_sdc_rtc - fix y2038 problem in proc_show 2015-10-22 23:31:28 -07:00
ideapad_slidebar.c
ims-pcu.c Input: ims-psu - check if CDC union descriptor is sane 2017-10-19 17:20:06 -07:00
ixp4xx-beeper.c
Kconfig Input: tps65218-pwrbutton - fix a spelling mistake in Kconfig 2018-01-01 22:54:42 -08:00
keyspan_remote.c Input: keyspan_remote - constify usb_device_id 2017-08-07 20:10:17 -07:00
kxtj9.c Input: kxtj9 - remove unneeded retval variable 2015-10-02 11:44:17 -07:00
m68kspkr.c
Makefile Input: gpio_tilt - delete driver 2018-01-01 22:54:42 -08:00
max8925_onkey.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-12-17 10:06:02 -08:00
max8997_haptic.c pwm: Changes for v4.7-rc1 2016-05-25 10:40:15 -07:00
max77693-haptic.c Linux 4.8 2016-10-13 17:25:40 -07:00
mc13783-pwrbutton.c
mma8450.c Input: mma8450 - drop unnecessary call to i2c_set_clientdata 2017-01-18 11:49:14 -08:00
palmas-pwrbutton.c Input: constify of_device_id arrays 2015-03-19 12:16:18 -07:00
pcap_keys.c
pcf8574_keypad.c Input: drop owner assignment from i2c_driver 2015-07-17 16:57:00 -07:00
pcf50633-input.c
pcspkr.c Input: pcspkr - fix code style and error value in pcspkr_event 2017-08-14 22:12:05 -07:00
pm8xxx-vibrator.c Input: pm8xxx-vib - add support for pm8916's vibrator 2017-04-05 08:52:39 -07:00
pm8941-pwrkey.c Input: misc - drop unnecessary calls to device_init_wakeup 2017-01-21 23:53:21 -08:00
pmic8xxx-pwrkey.c Input: misc - drop empty remove functions 2017-01-21 23:53:34 -08:00
powermate.c Input: powermate - constify usb_device_id and fix space before '[' error 2017-08-07 20:10:18 -07:00
pwm-beeper.c Input: pwm-beeper - support customized freq for SND_BELL 2017-03-07 10:39:23 -08:00
pwm-vibra.c Input: add a driver for PWM controllable vibrators 2017-09-04 12:13:24 -07:00
rb532_button.c MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
regulator-haptic.c Input: regulator-haptic - fix spelling mistake: "dveice" -> "device" 2016-06-23 10:43:57 -07:00
retu-pwrbutton.c Input: misc - drop empty remove functions 2017-01-21 23:53:34 -08:00
rk805-pwrkey.c Input: add power key driver for Rockchip RK805 PMIC 2017-07-24 17:00:55 -07:00
rotary_encoder.c Input: rotary_encoder - support binary encoding of states 2016-07-27 18:26:10 -07:00
sgi_btns.c
sirfsoc-onkey.c Input: misc - drop empty remove functions 2017-01-21 23:53:34 -08:00
soc_button_array.c Input: soc_button_array - silence -ENOENT error on Dell XPS13 9365 2017-08-20 09:30:23 -07:00
sparcspkr.c Input: sparcspkr - use platform_register/unregister_drivers() 2015-12-02 10:02:50 -08:00
tps65218-pwrbutton.c Linux 4.10-rc5 2017-01-24 12:37:43 -08:00
twl4030-pwrbutton.c mfd: twl: Move header file out of I2C realm 2017-09-04 14:41:02 +01:00
twl4030-vibra.c mfd: twl: Move header file out of I2C realm 2017-09-04 14:41:02 +01:00
twl6040-vibra.c Merge branch 'next' into for-linus 2016-05-16 17:25:08 -07:00
uinput.c Input: extend usable life of event timestamps to 2106 on 32 bit systems 2018-01-09 16:40:30 -08:00
wistron_btns.c Input: wistron_btns - remove use of sparse_keymap_free 2017-03-09 10:06:12 -08:00
wm831x-on.c Input: wm831x-on - pass the IRQF_ONESHOT flag 2015-05-15 15:58:42 -07:00
xen-kbdfront.c Input: xen-kbdfront - enable auto repeat for xen keyboard frontend driver 2017-08-28 10:31:31 -07:00
yealink.c Input: yealink - constify attribute_group structures 2017-07-12 14:18:30 -07:00
yealink.h Input: yealink - define packet offset __be16 instead of u16 2017-04-10 20:41:41 -07:00