4.14.341-openela.patch (15992B)
- SPDX-FileCopyrightText: 1991-2024 kernel.org contributors
- SPDX-FileCopyrightText: 2023-2024 Open Enterprise Linux Association <kernel-lts@openela.org>
- SPDX-License-Identifier: GPL-2.0-only
- Patch kernel headers up to 4.14.341-openela
- diff --git include/crypto/if_alg.h include/crypto/if_alg.h
- index 2ea6a95ca825..f803dc8c45ad 100644
- --- linux-4.14.336/include/crypto/if_alg.h
- +++ linux-4.14.336/include/crypto/if_alg.h
- @@ -146,6 +146,7 @@ struct af_alg_async_req {
- * @enc: Cryptographic operation to be performed when
- * recvmsg is invoked.
- * @len: Length of memory allocated for this data structure.
- + * @inflight: Non-zero when AIO requests are in flight.
- */
- struct af_alg_ctx {
- struct list_head tsgl_list;
- @@ -163,6 +164,8 @@ struct af_alg_ctx {
- bool enc;
- unsigned int len;
- +
- + unsigned int inflight;
- };
- int af_alg_register_type(const struct af_alg_type *type);
- diff --git include/drm/drm_bridge.h include/drm/drm_bridge.h
- index 6522d4cbc9d9..bfbd38c0b609 100644
- --- linux-4.14.336/include/drm/drm_bridge.h
- +++ linux-4.14.336/include/drm/drm_bridge.h
- @@ -161,7 +161,7 @@ struct drm_bridge_funcs {
- * or &drm_encoder_helper_funcs.dpms hook.
- *
- * The bridge must assume that the display pipe (i.e. clocks and timing
- - * singals) feeding it is no longer running when this callback is
- + * signals) feeding it is no longer running when this callback is
- * called.
- *
- * The post_disable callback is optional.
- diff --git include/drm/drm_mipi_dsi.h include/drm/drm_mipi_dsi.h
- index 689f615471ab..a059f1d968b7 100644
- --- linux-4.14.336/include/drm/drm_mipi_dsi.h
- +++ linux-4.14.336/include/drm/drm_mipi_dsi.h
- @@ -163,6 +163,7 @@ struct mipi_dsi_device_info {
- * struct mipi_dsi_device - DSI peripheral device
- * @host: DSI host for this peripheral
- * @dev: driver model device node for this peripheral
- + * @attached: the DSI device has been successfully attached
- * @name: DSI peripheral chip type
- * @channel: virtual channel assigned to the peripheral
- * @format: pixel format for video mode
- @@ -172,6 +173,7 @@ struct mipi_dsi_device_info {
- struct mipi_dsi_device {
- struct mipi_dsi_host *host;
- struct device dev;
- + bool attached;
- char name[DSI_DEV_NAME_SIZE];
- unsigned int channel;
- diff --git include/linux/bpf.h include/linux/bpf.h
- index 3aa05ea79ba1..0d7a61df056b 100644
- --- linux-4.14.336/include/linux/bpf.h
- +++ linux-4.14.336/include/linux/bpf.h
- @@ -38,7 +38,11 @@ struct bpf_map_ops {
- /* funcs called by prog_array and perf_event_array map */
- void *(*map_fd_get_ptr)(struct bpf_map *map, struct file *map_file,
- int fd);
- - void (*map_fd_put_ptr)(void *ptr);
- + /* If need_defer is true, the implementation should guarantee that
- + * the to-be-put element is still alive before the bpf program, which
- + * may manipulate it, exists.
- + */
- + void (*map_fd_put_ptr)(struct bpf_map *map, void *ptr, bool need_defer);
- u32 (*map_gen_lookup)(struct bpf_map *map, struct bpf_insn *insn_buf);
- u32 (*map_fd_sys_lookup_elem)(void *ptr);
- };
- diff --git include/linux/device.h include/linux/device.h
- index 65e06a066b67..27b70b810463 100644
- --- linux-4.14.336/include/linux/device.h
- +++ linux-4.14.336/include/linux/device.h
- @@ -1474,6 +1474,9 @@ do { \
- WARN_ONCE(condition, "%s %s: " format, \
- dev_driver_string(dev), dev_name(dev), ## arg)
- +extern __printf(3, 4)
- +int dev_err_probe(const struct device *dev, int err, const char *fmt, ...);
- +
- /* Create alias, so I can be autoloaded. */
- #define MODULE_ALIAS_CHARDEV(major,minor) \
- MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
- diff --git include/linux/dmaengine.h include/linux/dmaengine.h
- index 8089e28539f1..d5a7d320e05c 100644
- --- linux-4.14.336/include/linux/dmaengine.h
- +++ linux-4.14.336/include/linux/dmaengine.h
- @@ -816,7 +816,8 @@ static inline int dmaengine_slave_config(struct dma_chan *chan,
- static inline bool is_slave_direction(enum dma_transfer_direction direction)
- {
- - return (direction == DMA_MEM_TO_DEV) || (direction == DMA_DEV_TO_MEM);
- + return (direction == DMA_MEM_TO_DEV) || (direction == DMA_DEV_TO_MEM) ||
- + (direction == DMA_DEV_TO_DEV);
- }
- static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_single(
- diff --git include/linux/fs.h include/linux/fs.h
- index ff0a992846a3..bd6072556269 100644
- --- linux-4.14.336/include/linux/fs.h
- +++ linux-4.14.336/include/linux/fs.h
- @@ -296,6 +296,8 @@ enum rw_hint {
- #define IOCB_SYNC (1 << 5)
- #define IOCB_WRITE (1 << 6)
- #define IOCB_NOWAIT (1 << 7)
- +/* kiocb is a read or write operation submitted by fs/aio.c. */
- +#define IOCB_AIO_RW (1 << 23)
- struct kiocb {
- struct file *ki_filp;
- diff --git include/linux/lsm_hooks.h include/linux/lsm_hooks.h
- index 569debc49f3d..28ff40daccff 100644
- --- linux-4.14.336/include/linux/lsm_hooks.h
- +++ linux-4.14.336/include/linux/lsm_hooks.h
- @@ -466,6 +466,12 @@
- * simple integer value. When @arg represents a user space pointer, it
- * should never be used by the security module.
- * Return 0 if permission is granted.
- + * @file_ioctl_compat:
- + * @file contains the file structure.
- + * @cmd contains the operation to perform.
- + * @arg contains the operational arguments.
- + * Check permission for a compat ioctl operation on @file.
- + * Return 0 if permission is granted.
- * @mmap_addr :
- * Check permissions for a mmap operation at @addr.
- * @addr contains virtual address that will be used for the operation.
- @@ -1486,6 +1492,8 @@ union security_list_options {
- void (*file_free_security)(struct file *file);
- int (*file_ioctl)(struct file *file, unsigned int cmd,
- unsigned long arg);
- + int (*file_ioctl_compat)(struct file *file, unsigned int cmd,
- + unsigned long arg);
- int (*mmap_addr)(unsigned long addr);
- int (*mmap_file)(struct file *file, unsigned long reqprot,
- unsigned long prot, unsigned long flags);
- @@ -1764,6 +1772,7 @@ struct security_hook_heads {
- struct list_head file_alloc_security;
- struct list_head file_free_security;
- struct list_head file_ioctl;
- + struct list_head file_ioctl_compat;
- struct list_head mmap_addr;
- struct list_head mmap_file;
- struct list_head file_mprotect;
- diff --git include/linux/pci_ids.h include/linux/pci_ids.h
- index 83f576d45d78..c977e636a1dd 100644
- --- linux-4.14.336/include/linux/pci_ids.h
- +++ linux-4.14.336/include/linux/pci_ids.h
- @@ -2953,6 +2953,7 @@
- #define PCI_DEVICE_ID_INTEL_82443GX_0 0x71a0
- #define PCI_DEVICE_ID_INTEL_82443GX_2 0x71a2
- #define PCI_DEVICE_ID_INTEL_82372FB_1 0x7601
- +#define PCI_DEVICE_ID_INTEL_HDA_ARL 0x7728
- #define PCI_DEVICE_ID_INTEL_SCH_LPC 0x8119
- #define PCI_DEVICE_ID_INTEL_SCH_IDE 0x811a
- #define PCI_DEVICE_ID_INTEL_E6XX_CU 0x8183
- diff --git include/linux/security.h include/linux/security.h
- index 1c8968a267c2..cf77cd971795 100644
- --- linux-4.14.336/include/linux/security.h
- +++ linux-4.14.336/include/linux/security.h
- @@ -306,6 +306,8 @@ int security_file_permission(struct file *file, int mask);
- int security_file_alloc(struct file *file);
- void security_file_free(struct file *file);
- int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
- +int security_file_ioctl_compat(struct file *file, unsigned int cmd,
- + unsigned long arg);
- int security_mmap_file(struct file *file, unsigned long prot,
- unsigned long flags);
- int security_mmap_addr(unsigned long addr);
- @@ -827,6 +829,13 @@ static inline int security_file_ioctl(struct file *file, unsigned int cmd,
- return 0;
- }
- +static inline int security_file_ioctl_compat(struct file *file,
- + unsigned int cmd,
- + unsigned long arg)
- +{
- + return 0;
- +}
- +
- static inline int security_mmap_file(struct file *file, unsigned long prot,
- unsigned long flags)
- {
- diff --git include/linux/spi/spi.h include/linux/spi/spi.h
- index a8f6606dd498..5c7741ca3b99 100644
- --- linux-4.14.336/include/linux/spi/spi.h
- +++ linux-4.14.336/include/linux/spi/spi.h
- @@ -153,6 +153,7 @@ struct spi_device {
- #define SPI_MODE_1 (0|SPI_CPHA)
- #define SPI_MODE_2 (SPI_CPOL|0)
- #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
- +#define SPI_MODE_X_MASK (SPI_CPOL|SPI_CPHA)
- #define SPI_CS_HIGH 0x04 /* chipselect active high? */
- #define SPI_LSB_FIRST 0x08 /* per-word bits-on-wire */
- #define SPI_3WIRE 0x10 /* SI/SO signals shared */
- diff --git include/linux/units.h include/linux/units.h
- new file mode 100644
- index 000000000000..a0af6d2ef4e5
- --- /dev/null
- +++ linux-4.14.336/include/linux/units.h
- @@ -0,0 +1,92 @@
- +/* SPDX-License-Identifier: GPL-2.0 */
- +#ifndef _LINUX_UNITS_H
- +#define _LINUX_UNITS_H
- +
- +#include <linux/kernel.h>
- +
- +#define HZ_PER_KHZ 1000UL
- +#define KHZ_PER_MHZ 1000UL
- +#define HZ_PER_MHZ 1000000UL
- +
- +#define MILLIWATT_PER_WATT 1000UL
- +#define MICROWATT_PER_MILLIWATT 1000UL
- +#define MICROWATT_PER_WATT 1000000UL
- +
- +#define ABSOLUTE_ZERO_MILLICELSIUS -273150
- +
- +static inline long milli_kelvin_to_millicelsius(long t)
- +{
- + return t + ABSOLUTE_ZERO_MILLICELSIUS;
- +}
- +
- +static inline long millicelsius_to_milli_kelvin(long t)
- +{
- + return t - ABSOLUTE_ZERO_MILLICELSIUS;
- +}
- +
- +#define MILLIDEGREE_PER_DEGREE 1000
- +#define MILLIDEGREE_PER_DECIDEGREE 100
- +
- +static inline long kelvin_to_millicelsius(long t)
- +{
- + return milli_kelvin_to_millicelsius(t * MILLIDEGREE_PER_DEGREE);
- +}
- +
- +static inline long millicelsius_to_kelvin(long t)
- +{
- + t = millicelsius_to_milli_kelvin(t);
- +
- + return DIV_ROUND_CLOSEST(t, MILLIDEGREE_PER_DEGREE);
- +}
- +
- +static inline long deci_kelvin_to_celsius(long t)
- +{
- + t = milli_kelvin_to_millicelsius(t * MILLIDEGREE_PER_DECIDEGREE);
- +
- + return DIV_ROUND_CLOSEST(t, MILLIDEGREE_PER_DEGREE);
- +}
- +
- +static inline long celsius_to_deci_kelvin(long t)
- +{
- + t = millicelsius_to_milli_kelvin(t * MILLIDEGREE_PER_DEGREE);
- +
- + return DIV_ROUND_CLOSEST(t, MILLIDEGREE_PER_DECIDEGREE);
- +}
- +
- +/**
- + * deci_kelvin_to_millicelsius_with_offset - convert Kelvin to Celsius
- + * @t: temperature value in decidegrees Kelvin
- + * @offset: difference between Kelvin and Celsius in millidegrees
- + *
- + * Return: temperature value in millidegrees Celsius
- + */
- +static inline long deci_kelvin_to_millicelsius_with_offset(long t, long offset)
- +{
- + return t * MILLIDEGREE_PER_DECIDEGREE - offset;
- +}
- +
- +static inline long deci_kelvin_to_millicelsius(long t)
- +{
- + return milli_kelvin_to_millicelsius(t * MILLIDEGREE_PER_DECIDEGREE);
- +}
- +
- +static inline long millicelsius_to_deci_kelvin(long t)
- +{
- + t = millicelsius_to_milli_kelvin(t);
- +
- + return DIV_ROUND_CLOSEST(t, MILLIDEGREE_PER_DECIDEGREE);
- +}
- +
- +static inline long kelvin_to_celsius(long t)
- +{
- + return t + DIV_ROUND_CLOSEST(ABSOLUTE_ZERO_MILLICELSIUS,
- + MILLIDEGREE_PER_DEGREE);
- +}
- +
- +static inline long celsius_to_kelvin(long t)
- +{
- + return t - DIV_ROUND_CLOSEST(ABSOLUTE_ZERO_MILLICELSIUS,
- + MILLIDEGREE_PER_DEGREE);
- +}
- +
- +#endif /* _LINUX_UNITS_H */
- diff --git include/net/af_unix.h include/net/af_unix.h
- index 7ec1cdb66be8..e514508bdc92 100644
- --- linux-4.14.336/include/net/af_unix.h
- +++ linux-4.14.336/include/net/af_unix.h
- @@ -43,12 +43,6 @@ struct unix_skb_parms {
- #define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb))
- -#define unix_state_lock(s) spin_lock(&unix_sk(s)->lock)
- -#define unix_state_unlock(s) spin_unlock(&unix_sk(s)->lock)
- -#define unix_state_lock_nested(s) \
- - spin_lock_nested(&unix_sk(s)->lock, \
- - SINGLE_DEPTH_NESTING)
- -
- /* The AF_UNIX socket */
- struct unix_sock {
- /* WARNING: sk has to be the first member */
- @@ -72,6 +66,20 @@ static inline struct unix_sock *unix_sk(const struct sock *sk)
- return (struct unix_sock *)sk;
- }
- +#define unix_state_lock(s) spin_lock(&unix_sk(s)->lock)
- +#define unix_state_unlock(s) spin_unlock(&unix_sk(s)->lock)
- +enum unix_socket_lock_class {
- + U_LOCK_NORMAL,
- + U_LOCK_SECOND, /* for double locking, see unix_state_double_lock(). */
- + U_LOCK_DIAG, /* used while dumping icons, see sk_diag_dump_icons(). */
- +};
- +
- +static inline void unix_state_lock_nested(struct sock *sk,
- + enum unix_socket_lock_class subclass)
- +{
- + spin_lock_nested(&unix_sk(sk)->lock, subclass);
- +}
- +
- #define peer_wait peer_wq.wait
- long unix_inq_len(struct sock *sk);
- diff --git include/net/bluetooth/hci_core.h include/net/bluetooth/hci_core.h
- index 8f899ad4a754..bac3d79139b2 100644
- --- linux-4.14.336/include/net/bluetooth/hci_core.h
- +++ linux-4.14.336/include/net/bluetooth/hci_core.h
- @@ -647,7 +647,6 @@ void hci_inquiry_cache_flush(struct hci_dev *hdev);
- /* ----- linux-4.14.336/HCI Connections ----- */
- enum {
- HCI_CONN_AUTH_PEND,
- - HCI_CONN_REAUTH_PEND,
- HCI_CONN_ENCRYPT_PEND,
- HCI_CONN_RSWITCH_PEND,
- HCI_CONN_MODE_CHANGE_PEND,
- diff --git include/net/dst_ops.h include/net/dst_ops.h
- index 443863c7b8da..632086b2f644 100644
- --- linux-4.14.336/include/net/dst_ops.h
- +++ linux-4.14.336/include/net/dst_ops.h
- @@ -16,7 +16,7 @@ struct dst_ops {
- unsigned short family;
- unsigned int gc_thresh;
- - int (*gc)(struct dst_ops *ops);
- + void (*gc)(struct dst_ops *ops);
- struct dst_entry * (*check)(struct dst_entry *, __u32 cookie);
- unsigned int (*default_advmss)(const struct dst_entry *);
- unsigned int (*mtu)(const struct dst_entry *);
- @@ -53,9 +53,11 @@ static inline int dst_entries_get_slow(struct dst_ops *dst)
- return percpu_counter_sum_positive(&dst->pcpuc_entries);
- }
- +#define DST_PERCPU_COUNTER_BATCH 32
- static inline void dst_entries_add(struct dst_ops *dst, int val)
- {
- - percpu_counter_add(&dst->pcpuc_entries, val);
- + percpu_counter_add_batch(&dst->pcpuc_entries, val,
- + DST_PERCPU_COUNTER_BATCH);
- }
- static inline int dst_entries_init(struct dst_ops *dst)
- diff --git include/net/llc_pdu.h include/net/llc_pdu.h
- index 49aa79c7b278..581cd37aa98b 100644
- --- linux-4.14.336/include/net/llc_pdu.h
- +++ linux-4.14.336/include/net/llc_pdu.h
- @@ -262,8 +262,7 @@ static inline void llc_pdu_header_init(struct sk_buff *skb, u8 type,
- */
- static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa)
- {
- - if (skb->protocol == htons(ETH_P_802_2))
- - memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN);
- + memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN);
- }
- /**
- @@ -275,8 +274,7 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa)
- */
- static inline void llc_pdu_decode_da(struct sk_buff *skb, u8 *da)
- {
- - if (skb->protocol == htons(ETH_P_802_2))
- - memcpy(da, eth_hdr(skb)->h_dest, ETH_ALEN);
- + memcpy(da, eth_hdr(skb)->h_dest, ETH_ALEN);
- }
- /**
- diff --git include/net/netns/ipv6.h include/net/netns/ipv6.h
- index c004d051c2d3..290ca18589ee 100644
- --- linux-4.14.336/include/net/netns/ipv6.h
- +++ linux-4.14.336/include/net/netns/ipv6.h
- @@ -64,8 +64,8 @@ struct netns_ipv6 {
- struct dst_ops ip6_dst_ops;
- rwlock_t fib6_walker_lock;
- spinlock_t fib6_gc_lock;
- - unsigned int ip6_rt_gc_expire;
- - unsigned long ip6_rt_last_gc;
- + atomic_t ip6_rt_gc_expire;
- + unsigned long ip6_rt_last_gc;
- #ifdef CONFIG_IPV6_MULTIPLE_TABLES
- bool fib6_has_custom_rules;
- struct rt6_info *ip6_prohibit_entry;
- diff --git include/uapi/linux/btrfs.h include/uapi/linux/btrfs.h
- index 86d2a52b4665..ee7a34c237a5 100644
- --- linux-4.14.336/include/uapi/linux/btrfs.h
- +++ linux-4.14.336/include/uapi/linux/btrfs.h
- @@ -522,6 +522,9 @@ struct btrfs_ioctl_clone_range_args {
- */
- #define BTRFS_DEFRAG_RANGE_COMPRESS 1
- #define BTRFS_DEFRAG_RANGE_START_IO 2
- +#define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \
- + BTRFS_DEFRAG_RANGE_START_IO)
- +
- struct btrfs_ioctl_defrag_range_args {
- /* start of the defrag operation */
- __u64 start;
- diff --git include/uapi/linux/netfilter/nf_tables.h include/uapi/linux/netfilter/nf_tables.h
- index c7bb18ea4962..835e9f345f35 100644
- --- linux-4.14.336/include/uapi/linux/netfilter/nf_tables.h
- +++ linux-4.14.336/include/uapi/linux/netfilter/nf_tables.h
- @@ -229,9 +229,11 @@ enum nft_rule_attributes {
- /**
- * enum nft_rule_compat_flags - nf_tables rule compat flags
- *
- + * @NFT_RULE_COMPAT_F_UNUSED: unused
- * @NFT_RULE_COMPAT_F_INV: invert the check result
- */
- enum nft_rule_compat_flags {
- + NFT_RULE_COMPAT_F_UNUSED = (1 << 0),
- NFT_RULE_COMPAT_F_INV = (1 << 1),
- NFT_RULE_COMPAT_F_MASK = NFT_RULE_COMPAT_F_INV,
- };