sys-kernel/calculate-sources: delete 5.4

pull/1/head 2706
Alexander Tratsevskiy 3 years ago
parent 609d13a075
commit 4e786ca91f

@ -1 +0,0 @@
# Calculate append=skip merge(sys-kernel/calculate-sources)=>5.4,5.5

@ -1,133 +0,0 @@
# Calculate format=kernel name=.config os_install_arch_machine==x86_64
# CONFIG_ADT7316 is not set
# CONFIG_AK09911 is not set
# CONFIG_AK8975 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
# CONFIG_BACKLIGHT_APPLE is not set
# CONFIG_BACKLIGHT_ARCXCNN is not set
# CONFIG_BACKLIGHT_BD6107 is not set
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_GPIO is not set
# CONFIG_BACKLIGHT_LM3639 is not set
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_PM8941_WLED is not set
# CONFIG_BCMA_DRIVER_GPIO is not set
# CONFIG_CHARGER_BQ24190 is not set
# CONFIG_CHARGER_BQ24257 is not set
# CONFIG_CHARGER_BQ24735 is not set
# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_GPIO is not set
# CONFIG_CHARGER_LT3651 is not set
# CONFIG_CHARGER_RT9455 is not set
# CONFIG_DEBUG_GPIO is not set
CONFIG_DELL_RBU=m
CONFIG_DELL_SMBIOS_SMM=y
CONFIG_DELL_SMBIOS_WMI=y
# CONFIG_DHT11 is not set
# CONFIG_EXTCON_GPIO is not set
# CONFIG_EXTCON_INTEL_INT3496 is not set
# CONFIG_EXTCON_MAX3355 is not set
# CONFIG_EXTCON_PTN5150 is not set
# CONFIG_EXTCON_USB_GPIO is not set
# CONFIG_FB_VIA is not set
CONFIG_GPIO_ACPI=y
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_AMD8111 is not set
CONFIG_GPIO_AMD_FCH=m
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DLN2 is not set
# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_EXAR is not set
# CONFIG_GPIO_F7188X is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_ICH is not set
# CONFIG_GPIO_IT87 is not set
CONFIG_GPIOLIB_FASTPATH_LIMIT=512
CONFIG_GPIOLIB_IRQCHIP=y
CONFIG_GPIOLIB=y
# CONFIG_GPIO_LP873X is not set
# CONFIG_GPIO_LYNXPOINT is not set
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_MB86S7X is not set
# CONFIG_GPIO_ML_IOH is not set
# CONFIG_GPIO_MOCKUP is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
# CONFIG_GPIO_PCI_IDIO_16 is not set
# CONFIG_GPIO_RDC321X is not set
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
# CONFIG_GPIO_TPS65086 is not set
# CONFIG_GPIO_TPS65912 is not set
# CONFIG_GPIO_TQMX86 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WHISKEY_COVE is not set
# CONFIG_GPIO_WINBOND is not set
# CONFIG_GPIO_WS16C48 is not set
# CONFIG_GPIO_XILINX is not set
# CONFIG_HID_CP2112 is not set
CONFIG_HID_SENSOR_TEMP=m
CONFIG_HUAWEI_WMI=m
# CONFIG_HX711 is not set
# CONFIG_I2C_CBUS_GPIO is not set
CONFIG_I2C_DESIGNWARE_SLAVE=y
# CONFIG_I2C_GPIO is not set
CONFIG_I2C_MULTI_INSTANTIATE=m
CONFIG_I2C_MUX_GPIO=m
CONFIG_I2C_MUX_LTC4306=m
CONFIG_I2C_MUX_PCA954x=m
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_GP2A is not set
# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INPUT_GPIO_DECODER is not set
# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
# CONFIG_INPUT_GPIO_VIBRA is not set
CONFIG_INTEL_ATOMISP2_PM=m
CONFIG_INTEL_INT0002_VGPIO=m
# CONFIG_INTEL_SOC_PMIC_CHTDC_TI is not set
# CONFIG_KEYBOARD_GPIO is not set
CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_MATRIX is not set
CONFIG_LEDS_GPIO=m
# CONFIG_LEDS_LP3952 is not set
# CONFIG_LEDS_PCA9532_GPIO is not set
# CONFIG_LEDS_PCA955X_GPIO is not set
# CONFIG_LEDS_TRIGGER_GPIO is not set
# CONFIG_MANAGER_SBS is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_MEN_A21_WDT is not set
# CONFIG_MMA7660 is not set
# CONFIG_MMC35240 is not set
# CONFIG_MOUSE_GPIO is not set
CONFIG_PCENGINES_APU2=m
CONFIG_PEAQ_WMI=m
# CONFIG_REGULATOR_GPIO is not set
# CONFIG_REGULATOR_TPS65132 is not set
# CONFIG_RFKILL_GPIO is not set
CONFIG_SENSORS_IBMAEM=m
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IIO_HWMON=m
CONFIG_SENSORS_JC42=m
CONFIG_SENSORS_SHT15=m
CONFIG_SERIAL_MCTRL_GPIO=y
# CONFIG_SERIO_GPIO_PS2 is not set
# CONFIG_SRF04 is not set
# CONFIG_SSB_DRIVER_GPIO is not set
# CONFIG_TI_ST is not set
CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
CONFIG_TOUCHSCREEN_CY8CTMG110=m
CONFIG_TOUCHSCREEN_GOODIX=m
CONFIG_TOUCHSCREEN_HIDEEP=m
CONFIG_TOUCHSCREEN_RM_TS=m
CONFIG_TOUCHSCREEN_SIS_I2C=m
CONFIG_TOUCHSCREEN_ZFORCE=m
# CONFIG_TPS65010 is not set
# CONFIG_UCB1400_CORE is not set
# CONFIG_USB_CONN_GPIO is not set
# CONFIG_USB_GPIO_VBUS is not set

@ -1,3 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_DRM_VMWGFX_FBCON=y
CONFIG_DRM_VMWGFX=m

@ -1,13 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_IP_VS=m
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_RR=m
CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_NETFILTER_XT_TARGET_AUDIT=m

@ -1,31 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_EXFAT_DEFAULT_CODEPAGE=437
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
CONFIG_EXFAT_DELAYED_SYNC=y
CONFIG_EXFAT_DISCARD=y
# CONFIG_EXFAT_DONT_MOUNT_VFAT is not set
CONFIG_EXFAT_FS=m
# CONFIG_EXFAT_DEBUG_MSG is not set
# CONFIG_EXFAT_KERNEL_DEBUG is not set
# CONFIG_IP_VS_DEBUG is not set
# CONFIG_IP_VS_DH is not set
# CONFIG_IP_VS_FO is not set
# CONFIG_IP_VS_FTP is not set
# CONFIG_IP_VS_IPV6 is not set
# CONFIG_IP_VS_LBLC is not set
# CONFIG_IP_VS_LBLCR is not set
# CONFIG_IP_VS_LC is not set
# CONFIG_IP_VS_MH is not set
CONFIG_IP_VS_MH_TAB_INDEX=12
# CONFIG_IP_VS_NQ is not set
# CONFIG_IP_VS_OVF is not set
# CONFIG_IP_VS_PE_SIP is not set
# CONFIG_IP_VS_PROTO_AH is not set
# CONFIG_IP_VS_PROTO_ESP is not set
# CONFIG_IP_VS_PROTO_SCTP is not set
# CONFIG_IP_VS_SED is not set
# CONFIG_IP_VS_SH is not set
CONFIG_IP_VS_SH_TAB_BITS=8
CONFIG_IP_VS_TAB_BITS=12
# CONFIG_IP_VS_WLC is not set
# CONFIG_IP_VS_WRR is not set

@ -1,2 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_USB_PRINTER=m

@ -1,7 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_CRYPTO_LZ4HC=m
CONFIG_CRYPTO_LZ4=m
CONFIG_LZ4_COMPRESS=m
CONFIG_LZ4HC_COMPRESS=m
CONFIG_NET_REDIRECT=y
CONFIG_ZRAM_WRITEBACK=y

@ -1,4 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y
# CONFIG_SQUASHFS_DECOMP_MULTI is not set
CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y

@ -1,10 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_CRASH_DUMP=y
# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set
CONFIG_PROC_VMCORE=y
# CONFIG_UFS_DEBUG is not set
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_VMWARE_BALLOON is not set
CONFIG_VMWARE_VMCI=m
CONFIG_VMWARE_VMCI_VSOCKETS=m

@ -1,24 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_ACPI_ADXL=y
# CONFIG_ACPI_EXTLOG is not set
CONFIG_EDAC_AMD64_ERROR_INJECTION=y
CONFIG_EDAC_AMD64=m
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_DECODE_MCE=m
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I10NM=m
CONFIG_EDAC_I3000=m
CONFIG_EDAC_I3200=m
CONFIG_EDAC_I5000=m
CONFIG_EDAC_I5100=m
CONFIG_EDAC_I5400=m
CONFIG_EDAC_I7300=m
CONFIG_EDAC_I7CORE=m
CONFIG_EDAC_I82975X=m
CONFIG_EDAC_IE31200=m
CONFIG_EDAC_LEGACY_SYSFS=y
CONFIG_EDAC=m
CONFIG_EDAC_PND2=m
CONFIG_EDAC_SBRIDGE=m
CONFIG_EDAC_SKX=m
CONFIG_EDAC_X38=m

@ -1,14 +0,0 @@
# Calculate format=kernel name=.config
CONFIG_HW_RANDOM_TPM=y
# CONFIG_TCG_ATMEL is not set
CONFIG_TCG_CRB=m
# CONFIG_TCG_INFINEON is not set
# CONFIG_TCG_NSC is not set
# CONFIG_TCG_TIS_I2C_ATMEL is not set
# CONFIG_TCG_TIS_I2C_INFINEON is not set
# CONFIG_TCG_TIS_I2C_NUVOTON is not set
# CONFIG_TCG_TIS is not set
# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
CONFIG_TCG_TPM=m
# CONFIG_TCG_VTPM_PROXY is not set
# CONFIG_TRUSTED_KEYS is not set

@ -1,14 +0,0 @@
# Calculate format=kernel name=.config merge(sys-kernel/calculate-sources[-desktop])!=
# CONFIG_BT is not set
# CONFIG_GAMEPORT is not set
# CONFIG_HZ_1000 is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_MACINTOSH_DRIVERS is not set
# CONFIG_MEDIA_SUPPORT is not set
# CONFIG_PREEMPT is not set
# CONFIG_RC_CORE is not set
# CONFIG_SOUND is not set
# CONFIG_USB_GADGET is not set

@ -1,6 +0,0 @@
# Calculate format=kernel name=.config
# CONFIG_KERNEL_XZ is not set
CONFIG_KERNEL_ZSTD=y
# CONFIG_MODULE_COMPRESS_XZ is not set
CONFIG_MODULE_COMPRESS_ZSTD=y
CONFIG_ZSTD_DECOMPRESS=y

@ -1,326 +0,0 @@
# Calculate format=diff merge(sys-kernel/calculate-sources[fsync])!=
Squashed futex-wait-multiple patchset onto stable release v5.2.1
https://gitlab.collabora.com/krisman/linux/commits/futex-wait-multiple-master
diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h
index a89eb0accd5e..c34e52e0f787 100644
--- a/include/uapi/linux/futex.h
+++ b/include/uapi/linux/futex.h
@@ -21,6 +21,7 @@
#define FUTEX_WAKE_BITSET 10
#define FUTEX_WAIT_REQUEUE_PI 11
#define FUTEX_CMP_REQUEUE_PI 12
+#define FUTEX_WAIT_MULTIPLE 31
#define FUTEX_PRIVATE_FLAG 128
#define FUTEX_CLOCK_REALTIME 256
@@ -150,4 +151,10 @@ struct robust_list_head {
(((op & 0xf) << 28) | ((cmp & 0xf) << 24) \
| ((oparg & 0xfff) << 12) | (cmparg & 0xfff))
+struct futex_wait_block {
+ __u32 __user *uaddr;
+ __u32 val;
+ __u32 bitset;
+};
+
#endif /* _UAPI_LINUX_FUTEX_H */
diff --git a/kernel/futex.c b/kernel/futex.c
index 6d50728ef2e7..338ae60bd86c 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -183,6 +183,7 @@ static int __read_mostly futex_cmpxchg_enabled;
#endif
#define FLAGS_CLOCKRT 0x02
#define FLAGS_HAS_TIMEOUT 0x04
+#define FLAGS_WAKE_MULTIPLE 0x08
/*
* Priority Inheritance state:
@@ -2631,6 +2632,39 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
__set_current_state(TASK_RUNNING);
}
+static int __futex_wait_setup(u32 __user *uaddr, u32 val, unsigned int flags,
+ struct futex_q *q, struct futex_hash_bucket **hb)
+{
+
+ u32 uval;
+ int ret;
+
+retry_private:
+ *hb = queue_lock(q);
+
+ ret = get_futex_value_locked(&uval, uaddr);
+
+ if (ret) {
+ queue_unlock(*hb);
+
+ ret = get_user(uval, uaddr);
+ if (ret)
+ return ret;
+
+ if (!(flags & FLAGS_SHARED))
+ goto retry_private;
+
+ return 1;
+ }
+
+ if (uval != val) {
+ queue_unlock(*hb);
+ ret = -EWOULDBLOCK;
+ }
+
+ return ret;
+}
+
/**
* futex_wait_setup() - Prepare to wait on a futex
* @uaddr: the futex userspace address
@@ -2651,7 +2685,6 @@ static void futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q *q,
static int futex_wait_setup(u32 __user *uaddr, u32 val, unsigned int flags,
struct futex_q *q, struct futex_hash_bucket **hb)
{
- u32 uval;
int ret;
/*
@@ -2672,38 +2705,161 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, unsigned int flags,
* absorb a wakeup if *uaddr does not match the desired values
* while the syscall executes.
*/
-retry:
- ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q->key, FUTEX_READ);
- if (unlikely(ret != 0))
- return ret;
+ do {
+ ret = get_futex_key(uaddr, flags & FLAGS_SHARED,
+ &q->key, FUTEX_READ);
+ if (unlikely(ret != 0))
+ return ret;
-retry_private:
- *hb = queue_lock(q);
+ ret = __futex_wait_setup(uaddr, val, flags, q, hb);
- ret = get_futex_value_locked(&uval, uaddr);
+ /* Drop key reference if retry or error. */
+ if (ret)
+ put_futex_key(&q->key);
+ } while (ret > 0);
- if (ret) {
- queue_unlock(*hb);
+ return ret;
+}
- ret = get_user(uval, uaddr);
- if (ret)
+static int do_futex_wait_multiple(struct futex_wait_block *wb,
+ u32 count, unsigned int flags,
+ ktime_t *abs_time)
+{
+
+ struct hrtimer_sleeper timeout, *to;
+ struct futex_hash_bucket *hb;
+ struct futex_q *qs = NULL;
+ int ret;
+ int i;
+
+ qs = kcalloc(count, sizeof(struct futex_q), GFP_KERNEL);
+ if (!qs)
+ return -ENOMEM;
+
+ to = futex_setup_timer(abs_time, &timeout, flags,
+ current->timer_slack_ns);
+ retry:
+ for (i = 0; i < count; i++) {
+ qs[i].key = FUTEX_KEY_INIT;
+ qs[i].bitset = wb[i].bitset;
+
+ ret = get_futex_key(wb[i].uaddr, flags & FLAGS_SHARED,
+ &qs[i].key, FUTEX_READ);
+ if (unlikely(ret != 0)) {
+ for (--i; i >= 0; i--)
+ put_futex_key(&qs[i].key);
goto out;
+ }
+ }
- if (!(flags & FLAGS_SHARED))
- goto retry_private;
+ set_current_state(TASK_INTERRUPTIBLE);
+
+ for (i = 0; i < count; i++) {
+ ret = __futex_wait_setup(wb[i].uaddr, wb[i].val,
+ flags, &qs[i], &hb);
+ if (ret) {
+ /* Drop the failed key directly. keys 0..(i-1)
+ * will be put by unqueue_me. */
+ put_futex_key(&qs[i].key);
+
+ /* Undo the partial work we did. */
+ for (--i; i >= 0; i--)
+ unqueue_me(&qs[i]);
+
+ __set_current_state(TASK_RUNNING);
+ if (ret > 0)
+ goto retry;
+ goto out;
+ }
+
+ /* We can't hold to the bucket lock when dealing with
+ * the next futex. Queue ourselves now so we can unlock
+ * it before moving on. */
+ queue_me(&qs[i], hb);
+ }
+
+ if (to)
+ hrtimer_start_expires(&to->timer, HRTIMER_MODE_ABS);
+
+ /* There is no easy to way to check if we are wake already on
+ * multiple futexes without waking through each one of them. So
+ * just sleep and let the scheduler handle it.
+ */
+ if (!to || to->task)
+ freezable_schedule();
+
+ __set_current_state(TASK_RUNNING);
- put_futex_key(&q->key);
+ ret = -ETIMEDOUT;
+ /* If we were woken (and unqueued), we succeeded. */
+ for (i = 0; i < count; i++)
+ if (!unqueue_me(&qs[i]))
+ ret = i;
+
+ /* Succeed wakeup */
+ if (ret >= 0)
+ goto out;
+
+ /* Woken by triggered timeout */
+ if (to && !to->task)
+ goto out;
+
+ /*
+ * We expect signal_pending(current), but we might be the
+ * victim of a spurious wakeup as well.
+ */
+ if (!signal_pending(current))
goto retry;
+
+ ret = -ERESTARTSYS;
+ if (!abs_time)
+ goto out;
+
+ ret = -ERESTART_RESTARTBLOCK;
+ out:
+ if (to) {
+ hrtimer_cancel(&to->timer);
+ destroy_hrtimer_on_stack(&to->timer);
}
- if (uval != val) {
- queue_unlock(*hb);
- ret = -EWOULDBLOCK;
+ kfree(qs);
+ return ret;
+}
+
+static int futex_wait_multiple(u32 __user *uaddr, unsigned int flags,
+ u32 count, ktime_t *abs_time)
+{
+ struct futex_wait_block *wb;
+ struct restart_block *restart;
+ int ret;
+
+ if (!count)
+ return -EINVAL;
+
+ wb = kcalloc(count, sizeof(struct futex_wait_block), GFP_KERNEL);
+ if (!wb)
+ return -ENOMEM;
+
+ if (copy_from_user(wb, uaddr,
+ count * sizeof(struct futex_wait_block))) {
+ ret = -EFAULT;
+ goto out;
+ }
+
+ ret = do_futex_wait_multiple(wb, count, flags, abs_time);
+
+ if (ret == -ERESTART_RESTARTBLOCK) {
+ restart = &current->restart_block;
+ restart->fn = futex_wait_restart;
+ restart->futex.uaddr = uaddr;
+ restart->futex.val = count;
+ restart->futex.time = *abs_time;
+ restart->futex.flags = (flags | FLAGS_HAS_TIMEOUT |
+ FLAGS_WAKE_MULTIPLE);
}
out:
- if (ret)
- put_futex_key(&q->key);
+ kfree(wb);
return ret;
}
@@ -2784,6 +2940,10 @@ static long futex_wait_restart(struct restart_block *restart)
}
restart->fn = do_no_restart_syscall;
+ if (restart->futex.flags & FLAGS_WAKE_MULTIPLE)
+ return (long)futex_wait_multiple(uaddr, restart->futex.flags,
+ restart->futex.val, tp);
+
return (long)futex_wait(uaddr, restart->futex.flags,
restart->futex.val, tp, restart->futex.bitset);
}
@@ -3667,6 +3827,8 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
uaddr2);
case FUTEX_CMP_REQUEUE_PI:
return futex_requeue(uaddr, flags, uaddr2, val, val2, &val3, 1);
+ case FUTEX_WAIT_MULTIPLE:
+ return futex_wait_multiple(uaddr, flags, val, timeout);
}
return -ENOSYS;
}
@@ -3683,7 +3845,8 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
if (utime && (cmd == FUTEX_WAIT || cmd == FUTEX_LOCK_PI ||
cmd == FUTEX_WAIT_BITSET ||
- cmd == FUTEX_WAIT_REQUEUE_PI)) {
+ cmd == FUTEX_WAIT_REQUEUE_PI ||
+ cmd == FUTEX_WAIT_MULTIPLE)) {
if (unlikely(should_fail_futex(!(op & FUTEX_PRIVATE_FLAG))))
return -EFAULT;
if (get_timespec64(&ts, utime))
@@ -3692,7 +3855,7 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
return -EINVAL;
t = timespec64_to_ktime(ts);
- if (cmd == FUTEX_WAIT)
+ if (cmd == FUTEX_WAIT || cmd == FUTEX_WAIT_MULTIPLE)
t = ktime_add_safe(ktime_get(), t);
tp = &t;
}
@@ -3876,14 +4039,15 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val,
if (utime && (cmd == FUTEX_WAIT || cmd == FUTEX_LOCK_PI ||
cmd == FUTEX_WAIT_BITSET ||
- cmd == FUTEX_WAIT_REQUEUE_PI)) {
+ cmd == FUTEX_WAIT_REQUEUE_PI ||
+ cmd == FUTEX_WAIT_MULTIPLE)) {
if (get_old_timespec32(&ts, utime))
return -EFAULT;
if (!timespec64_valid(&ts))
return -EINVAL;
t = timespec64_to_ktime(ts);
- if (cmd == FUTEX_WAIT)
+ if (cmd == FUTEX_WAIT || cmd == FUTEX_WAIT_MULTIPLE)
t = ktime_add_safe(ktime_get(), t);
tp = &t;
}

@ -1,9 +1,6 @@
DIST linux-5.10.tar.xz 116606704 BLAKE2B b923d7b66309224f42f35f8a5fa219421b0a9362d2adacdadd8d96251f61f7230878ea297a269a7f3b3c56830f0b177e068691e1d7f88501a05653b0a13274d1 SHA512 95bc137d0cf9148da6a9d1f1a878698dc27b40f68e22c597544010a6c591ce1b256f083489d3ff45ff77753289b535135590194d88ef9f007d0ddab3d74de70e
DIST linux-5.14.tar.xz 120669872 BLAKE2B 0047f5aaa3940dff97f4055ef544faafbbb5282128e6afe21d2f47d8dc8c395806a17016febfa050117d16f59e74b882cb8b9c5011d68f119c230d0a4d120524 SHA512 8e4f3ec3d36f774280f75dc7b004a43e09417af58f12e9c9f8348976659d4cfda7ad905f306f43fed66a27922e5c45db22e46bbfa7a0b9f365012380de3b6f64
DIST linux-5.15.tar.xz 121913744 BLAKE2B 3921274b23f7938abdf3ed9334534b4581e13d7484303d3a5280eddb038999aaa8b836666a487472d9c4a219af0f06b9fecccaf348fb5510ab8762f4ef4b7e83 SHA512 d25ad40b5bcd6a4c6042fd0fd84e196e7a58024734c3e9a484fd0d5d54a0c1d87db8a3c784eff55e43b6f021709dc685eb0efa18d2aec327e4f88a79f405705a
DIST linux-5.4.tar.xz 109441440 BLAKE2B 193bc4a3147e147d5529956164ec4912fad5d5c6fb07f909ff1056e57235834173194afc686993ccd785c1ff15804de0961b625f3008cca0e27493efc8f27b13 SHA512 9f60f77e8ab972b9438ac648bed17551c8491d6585a5e85f694b2eaa4c623fbc61eb18419b2656b6795eac5deec0edaa04547fc6723fbda52256bd7f3486898f
DIST patch-5.10.73.xz 2213532 BLAKE2B 8069486891bd8bd2d6f15204f6c18848c374a650254a4b381126407fdc3136b625f8e13e3a3ba93817f71c80297a5ad7c4f25a8f43330f0017f37396c033cf95 SHA512 630d564b49ea9e5d67ac2395b312e653ba8aa28011cd5565ad506b0296c7598eebbf2e7a792e06b4c90e75bb764e0c2dc0246b11d496e7ad5533c0e177d887cc
DIST patch-5.10.77.xz 2272320 BLAKE2B 209beaa7f6cbc12e9b40370cad2fa30cb062be843aa669cff1908742ceed5eb65a1f1b0d5b2e55379907065b5d86c431f8db80ef01e58bf77e4552e4163e7938 SHA512 51d222ab9622e37dcfb3ec4bba867b043880179e38fb991da48b86183a83f3f1af00485b461f757a7e58899e062738b9e8f7caced550dd2660fef33e5afe3262
DIST patch-5.14.16.xz 602960 BLAKE2B 467f64556136fb2f961042f9a99a8e80f651b4f3476e88d908f04193a8fed7975e8685e4867cdd16e2e0912e0e22931727502958c61ba0940cd3bc4395a7ce8e SHA512 c909aea0ca239d32e06a8602b154397de3885588410738d099d6a13f0149766fd106e6e7e235b0c4a3873d8155e403a371d82a85af5592c619d1ce683800c811
DIST patch-5.4.124.xz 3006220 BLAKE2B 394645f0cf7898c98d416e93858b3effe171d5bdbc968bccd876c41de527ce0221331a06744cc081a05407d3b539d7ab83ae526ff1cc99e9e17629af7b968932 SHA512 9a8a5388d921c55a6f620f2da0528c4d0ed4487cfa58ac876b7b9625247860e3b25bbfcd39b4ae73f34c2d2b8a45b155a149613a650a1306bdab4bad57f8f9e9
DIST patch-5.4.157.xz 3446952 BLAKE2B e443b31e2c505886009b8625638d678d974f6223291c3ef079189df341f3700cca208b350150e14d284269ec0143d228277d1a0edb35e59808e268ffe3fddfc0 SHA512 b274006c15c7a09ad459f59d90fe88128b15a4a4eaf984bce97ebc5b701fa83a28ebfb5fb44d7c5086f73ee99a212b137b2de06a5bfc1b1c889a63f8840afeb2

@ -1,24 +0,0 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=7
ETYPE="sources"
inherit calculate-kernel-8 eutils
DESCRIPTION="Calculate Linux kernel image"
KEYWORDS="amd64"
HOMEPAGE="http://www.calculate-linux.org"
SRC_URI="${KERNEL_URI} ${ARCH_URI}"
IUSE="fsync muqss uksm"
src_unpack() {
calculate-kernel-8_src_unpack
}
pkg_postinst() {
calculate-kernel-8_pkg_postinst
}

@ -1,24 +0,0 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=7
ETYPE="sources"
inherit calculate-kernel-8 eutils
DESCRIPTION="Calculate Linux kernel image"
KEYWORDS="~amd64"
HOMEPAGE="http://www.calculate-linux.org"
SRC_URI="${KERNEL_URI} ${ARCH_URI}"
IUSE="fsync muqss uksm"
src_unpack() {
calculate-kernel-8_src_unpack
}
pkg_postinst() {
calculate-kernel-8_pkg_postinst
}
Loading…
Cancel
Save