History

Merge branch 'next' into for-linus

Prepare input updates for 5.6 merge window.

Dmitry Torokhov committed 6 years ago

Commit b19efca2 parents 996d5d5 c5ccf2a11657 files · +562001 −241433Browse files

Showing the changes to include/uapi/linux (78 of 11657 files). Show all

Unified · Split

78 files
  1. include/uapi/linux/audit.h +1 −0
  2. include/uapi/linux/blkzoned.h +14 −3
  3. include/uapi/linux/bpf.h +132 −56
  4. include/uapi/linux/btrfs.h +4 −1
  5. include/uapi/linux/btrfs_tree.h +18 −5
  6. include/uapi/linux/can.h +1 −1
  7. include/uapi/linux/can/bcm.h +1 −1
  8. include/uapi/linux/can/error.h +1 −1
  9. include/uapi/linux/can/gw.h +1 −1
  10. include/uapi/linux/can/j1939.h +1 −1
  11. include/uapi/linux/can/netlink.h +1 −1
  12. include/uapi/linux/can/raw.h +1 −1
  13. include/uapi/linux/can/vxcan.h +1 −1
  14. include/uapi/linux/cec-funcs.h +18 −16
  15. include/uapi/linux/cec.h +131 −2
  16. include/uapi/linux/chio.h +4 −7
  17. include/uapi/linux/cyclades.h +3 −3
  18. include/uapi/linux/dcbnl.h +1 −1
  19. include/uapi/linux/devlink.h +5 −0
  20. include/uapi/linux/elfcore.h +4 −4
  21. include/uapi/linux/errqueue.h +7 −0
  22. include/uapi/linux/ethtool.h +6 −0
  23. include/uapi/linux/fcntl.h +8 −1
  24. include/uapi/linux/fscrypt.h +2 −1
  25. include/uapi/linux/fuse.h +37 −0
  26. include/uapi/linux/gen_stats.h +1 −4
  27. include/uapi/linux/gpio.h +24 −0
  28. include/uapi/linux/if.h +1 −0
  29. include/uapi/linux/if_link.h +2 −0
  30. include/uapi/linux/input-event-codes.h +75 −0
  31. include/uapi/linux/io_uring.h +44 −14
  32. include/uapi/linux/iommu.h +169 −0
  33. include/uapi/linux/kcov.h +28 −0
  34. include/uapi/linux/kvm.h +12 −0
  35. include/uapi/linux/lwtunnel.h +41 −0
  36. include/uapi/linux/magic.h +1 −0
  37. include/uapi/linux/msg.h +3 −3
  38. include/uapi/linux/netfilter/ipset/ip_set.h +2 −0
  39. include/uapi/linux/netfilter/nf_tables.h +4 −0
  40. include/uapi/linux/netfilter/xt_sctp.h +3 −3
  41. include/uapi/linux/netfilter_arp/arp_tables.h +1 −1
  42. include/uapi/linux/netfilter_bridge/ebtables.h +1 −1
  43. include/uapi/linux/netfilter_ipv4/ip_tables.h +1 −1
  44. include/uapi/linux/netfilter_ipv6/ip6_tables.h +1 −1
  45. include/uapi/linux/nl80211.h +39 −0
  46. include/uapi/linux/nvme_ioctl.h +1 −0
  47. include/uapi/linux/openvswitch.h +3 −1
  48. include/uapi/linux/pci_regs.h +3 −0
  49. include/uapi/linux/perf_event.h +8 −2
  50. include/uapi/linux/pkt_cls.h +34 −0
  51. include/uapi/linux/pkt_sched.h +14 −8
  52. include/uapi/linux/ppp-ioctl.h +2 −0
  53. include/uapi/linux/ppp_defs.h +16 −2
  54. include/uapi/linux/psp-sev.h +3 −0
  55. include/uapi/linux/ptp_clock.h +4 −1
  56. include/uapi/linux/resource.h +2 −2
  57. include/uapi/linux/rtnetlink.h +7 −0
  58. include/uapi/linux/scc.h +1 −0
  59. include/uapi/linux/sched.h +42 −18
  60. include/uapi/linux/sctp.h +30 −1
  61. include/uapi/linux/seccomp.h +29 −0
  62. include/uapi/linux/sed-opal.h +20 −0
  63. include/uapi/linux/sem.h +2 −2
  64. include/uapi/linux/serial_core.h +1 −1
  65. include/uapi/linux/shm.h +3 −3
  66. include/uapi/linux/snmp.h +17 −0
  67. include/uapi/linux/stat.h +1 −1
  68. include/uapi/linux/tc_act/tc_tunnel_key.h +29 −0
  69. include/uapi/linux/tcp.h +9 −1
  70. include/uapi/linux/time.h +3 −3
  71. include/uapi/linux/time_types.h +5 −0
  72. include/uapi/linux/tipc.h +22 −0
  73. include/uapi/linux/tipc_config.h +2 −2
  74. include/uapi/linux/tipc_netlink.h +4 −0
  75. include/uapi/linux/utime.h +2 −2
  76. include/uapi/linux/v4l2-controls.h +1 −0
  77. include/uapi/linux/videodev2.h +17 −5
  78. include/uapi/linux/virtio_ring.h +1 −1
include/uapi/linux/audit.h+1−0
@@ -143,6 +143,7 @@ · 142 unmodified lines
143143 #define AUDIT_ANOM_PROMISCUOUS 1700 /* Device changed promiscuous mode */
144144 #define AUDIT_ANOM_ABEND 1701 /* Process ended abnormally */
145145 #define AUDIT_ANOM_LINK 1702 /* Suspicious use of file links */
146+#define AUDIT_ANOM_CREAT 1703 /* Suspicious file creation */
146147 #define AUDIT_INTEGRITY_DATA 1800 /* Data integrity verification */
147148 #define AUDIT_INTEGRITY_METADATA 1801 /* Metadata integrity verification */
148149 #define AUDIT_INTEGRITY_STATUS 1802 /* Integrity enable status */
include/uapi/linux/blkzoned.h+14−3
@@ -120,9 +120,11 @@ struct blk_zone_report { · 119 unmodified lines
120120 };
121121
122122 /**
123− * struct blk_zone_range - BLKRESETZONE ioctl request
124− * @sector: starting sector of the first zone to issue reset write pointer
125− * @nr_sectors: Total number of sectors of 1 or more zones to reset
123+ * struct blk_zone_range - BLKRESETZONE/BLKOPENZONE/
124+ * BLKCLOSEZONE/BLKFINISHZONE ioctl
125+ * requests
126+ * @sector: Starting sector of the first zone to operate on.
127+ * @nr_sectors: Total number of sectors of all zones to operate on.
126128 */
127129 struct blk_zone_range {
128130 __u64 sector;
@@ -139,10 +141,19 @@ struct blk_zone_range { · 10 unmodified lines
139141 * sector range. The sector range must be zone aligned.
140142 * @BLKGETZONESZ: Get the device zone size in number of 512 B sectors.
141143 * @BLKGETNRZONES: Get the total number of zones of the device.
144+ * @BLKOPENZONE: Open the zones in the specified sector range.
145+ * The 512 B sector range must be zone aligned.
146+ * @BLKCLOSEZONE: Close the zones in the specified sector range.
147+ * The 512 B sector range must be zone aligned.
148+ * @BLKFINISHZONE: Mark the zones as full in the specified sector range.
149+ * The 512 B sector range must be zone aligned.
142150 */
143151 #define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report)
144152 #define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range)
145153 #define BLKGETZONESZ _IOR(0x12, 132, __u32)
146154 #define BLKGETNRZONES _IOR(0x12, 133, __u32)
155+#define BLKOPENZONE _IOW(0x12, 134, struct blk_zone_range)
156+#define BLKCLOSEZONE _IOW(0x12, 135, struct blk_zone_range)
157+#define BLKFINISHZONE _IOW(0x12, 136, struct blk_zone_range)
147158
148159 #endif /* _UAPI_BLKZONED_H */
include/uapi/linux/bpf.h+132−56
@@ -173,6 +173,7 @@ enum bpf_prog_type { · 172 unmodified lines
173173 BPF_PROG_TYPE_CGROUP_SYSCTL,
174174 BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
175175 BPF_PROG_TYPE_CGROUP_SOCKOPT,
176+ BPF_PROG_TYPE_TRACING,
176177 };
177178
178179 enum bpf_attach_type {
@@ -199,6 +200,9 @@ enum bpf_attach_type { · 20 unmodified lines
199200 BPF_CGROUP_UDP6_RECVMSG,
200201 BPF_CGROUP_GETSOCKOPT,
201202 BPF_CGROUP_SETSOCKOPT,
203+ BPF_TRACE_RAW_TP,
204+ BPF_TRACE_FENTRY,
205+ BPF_TRACE_FEXIT,
202206 __MAX_BPF_ATTACH_TYPE
203207 };
204208
@@ -344,6 +348,9 @@ enum bpf_attach_type { · 139 unmodified lines
344348 /* Clone map from listener for newly accepted socket */
345349 #define BPF_F_CLONE (1U << 9)
346350
351+/* Enable memory-mapping BPF map */
352+#define BPF_F_MMAPABLE (1U << 10)
353+
347354 /* flags for BPF_PROG_QUERY */
348355 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
349356
@@ -420,6 +427,8 @@ union bpf_attr { · 70 unmodified lines
420427 __u32 line_info_rec_size; /* userspace bpf_line_info size */
421428 __aligned_u64 line_info; /* line info */
422429 __u32 line_info_cnt; /* number of bpf_line_info records */
430+ __u32 attach_btf_id; /* in-kernel BTF type id to attach to */
431+ __u32 attach_prog_fd; /* 0 to attach to vmlinux */
423432 };
424433
425434 struct { /* anonymous struct used by BPF_OBJ_* commands */
@@ -560,10 +569,13 @@ union bpf_attr { · 134 unmodified lines
560569 * Return
561570 * 0 on success, or a negative error in case of failure.
562571 *
563− * int bpf_probe_read(void *dst, u32 size, const void *src)
572+ * int bpf_probe_read(void *dst, u32 size, const void *unsafe_ptr)
564573 * Description
565574 * For tracing programs, safely attempt to read *size* bytes from
566− * address *src* and store the data in *dst*.
575+ * kernel space address *unsafe_ptr* and store the data in *dst*.
576+ *
577+ * Generally, use bpf_probe_read_user() or bpf_probe_read_kernel()
578+ * instead.
567579 * Return
568580 * 0 on success, or a negative error in case of failure.
569581 *
@@ -794,7 +806,7 @@ union bpf_attr { · 224 unmodified lines
794806 * A 64-bit integer containing the current GID and UID, and
795807 * created as such: *current_gid* **<< 32 \|** *current_uid*.
796808 *
797− * int bpf_get_current_comm(char *buf, u32 size_of_buf)
809+ * int bpf_get_current_comm(void *buf, u32 size_of_buf)
798810 * Description
799811 * Copy the **comm** attribute of the current task into *buf* of
800812 * *size_of_buf*. The **comm** attribute contains the name of
@@ -1023,7 +1035,7 @@ union bpf_attr { · 222 unmodified lines
10231035 * The realm of the route for the packet associated to *skb*, or 0
10241036 * if none was found.
10251037 *
1026− * int bpf_perf_event_output(struct pt_regs *ctx, struct bpf_map *map, u64 flags, void *data, u64 size)
1038+ * int bpf_perf_event_output(void *ctx, struct bpf_map *map, u64 flags, void *data, u64 size)
10271039 * Description
10281040 * Write raw *data* blob into a special BPF perf event held by
10291041 * *map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. This perf
@@ -1068,7 +1080,7 @@ union bpf_attr { · 38 unmodified lines
10681080 * Return
10691081 * 0 on success, or a negative error in case of failure.
10701082 *
1071− * int bpf_skb_load_bytes(const struct sk_buff *skb, u32 offset, void *to, u32 len)
1083+ * int bpf_skb_load_bytes(const void *skb, u32 offset, void *to, u32 len)
10721084 * Description
10731085 * This helper was provided as an easy way to load data from a
10741086 * packet. It can be used to load *len* bytes from *offset* from
@@ -1085,7 +1097,7 @@ union bpf_attr { · 10 unmodified lines
10851097 * Return
10861098 * 0 on success, or a negative error in case of failure.
10871099 *
1088− * int bpf_get_stackid(struct pt_regs *ctx, struct bpf_map *map, u64 flags)
1100+ * int bpf_get_stackid(void *ctx, struct bpf_map *map, u64 flags)
10891101 * Description
10901102 * Walk a user or a kernel stack and return its id. To achieve
10911103 * this, the helper needs *ctx*, which is a pointer to the context
@@ -1154,7 +1166,7 @@ union bpf_attr { · 62 unmodified lines
11541166 * The checksum result, or a negative error code in case of
11551167 * failure.
11561168 *
1157− * int bpf_skb_get_tunnel_opt(struct sk_buff *skb, u8 *opt, u32 size)
1169+ * int bpf_skb_get_tunnel_opt(struct sk_buff *skb, void *opt, u32 size)
11581170 * Description
11591171 * Retrieve tunnel options metadata for the packet associated to
11601172 * *skb*, and store the raw tunnel option data to the buffer *opt*
@@ -1172,7 +1184,7 @@ union bpf_attr { · 11 unmodified lines
11721184 * Return
11731185 * The size of the option data retrieved.
11741186 *
1175− * int bpf_skb_set_tunnel_opt(struct sk_buff *skb, u8 *opt, u32 size)
1187+ * int bpf_skb_set_tunnel_opt(struct sk_buff *skb, void *opt, u32 size)
11761188 * Description
11771189 * Set tunnel options metadata for the packet associated to *skb*
11781190 * to the option data contained in the raw buffer *opt* of *size*.
@@ -1425,45 +1437,14 @@ union bpf_attr { · 246 unmodified lines
14251437 * Return
14261438 * 0 on success, or a negative error in case of failure.
14271439 *
1428− * int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)
1440+ * int bpf_probe_read_str(void *dst, u32 size, const void *unsafe_ptr)
14291441 * Description
1430− * Copy a NUL terminated string from an unsafe address
1431− * *unsafe_ptr* to *dst*. The *size* should include the
1432− * terminating NUL byte. In case the string length is smaller than
1433− * *size*, the target is not padded with further NUL bytes. If the
1434− * string length is larger than *size*, just *size*-1 bytes are
1435− * copied and the last byte is set to NUL.
1436− *
1437− * On success, the length of the copied string is returned. This
1438− * makes this helper useful in tracing programs for reading
1439− * strings, and more importantly to get its length at runtime. See
1440− * the following snippet:
1441− *
1442− * ::
1443− *
1444− * SEC("kprobe/sys_open")
1445− * void bpf_sys_open(struct pt_regs *ctx)
1446− * {
1447− * char buf[PATHLEN]; // PATHLEN is defined to 256
1448− * int res = bpf_probe_read_str(buf, sizeof(buf),
1449− * ctx->di);
1450− *
1451− * // Consume buf, for example push it to
1452− * // userspace via bpf_perf_event_output(); we
1453− * // can use res (the string length) as event
1454− * // size, after checking its boundaries.
1455− * }
1442+ * Copy a NUL terminated string from an unsafe kernel address
1443+ * *unsafe_ptr* to *dst*. See bpf_probe_read_kernel_str() for
1444+ * more details.
14561445 *
1457− * In comparison, using **bpf_probe_read()** helper here instead
1458− * to read the string would require to estimate the length at
1459− * compile time, and would often result in copying more memory
1460− * than necessary.
1461− *
1462− * Another useful use case is when parsing individual process
1463− * arguments or individual environment variables navigating
1464− * *current*\ **->mm->arg_start** and *current*\
1465− * **->mm->env_start**: using this helper and the return value,
1466− * one can quickly iterate at the right offset of the memory area.
1446+ * Generally, use bpf_probe_read_user_str() or bpf_probe_read_kernel_str()
1447+ * instead.
14671448 * Return
14681449 * On success, the strictly positive length of the string,
14691450 * including the trailing NUL character. On error, a negative
@@ -1511,7 +1492,7 @@ union bpf_attr { · 41 unmodified lines
15111492 * Return
15121493 * 0
15131494 *
1514− * int bpf_setsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, char *optval, int optlen)
1495+ * int bpf_setsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, void *optval, int optlen)
15151496 * Description
15161497 * Emulate a call to **setsockopt()** on the socket associated to
15171498 * *bpf_socket*, which must be a full socket. The *level* at
@@ -1595,7 +1576,7 @@ union bpf_attr { · 77 unmodified lines
15951576 * Return
15961577 * **XDP_REDIRECT** on success, or **XDP_ABORTED** on error.
15971578 *
1598− * int bpf_sk_redirect_map(struct bpf_map *map, u32 key, u64 flags)
1579+ * int bpf_sk_redirect_map(struct sk_buff *skb, struct bpf_map *map, u32 key, u64 flags)
15991580 * Description
16001581 * Redirect the packet to the socket referenced by *map* (of type
16011582 * **BPF_MAP_TYPE_SOCKMAP**) at index *key*. Both ingress and
@@ -1715,7 +1696,7 @@ union bpf_attr { · 113 unmodified lines
17151696 * Return
17161697 * 0 on success, or a negative error in case of failure.
17171698 *
1718− * int bpf_getsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, char *optval, int optlen)
1699+ * int bpf_getsockopt(struct bpf_sock_ops *bpf_socket, int level, int optname, void *optval, int optlen)
17191700 * Description
17201701 * Emulate a call to **getsockopt()** on the socket associated to
17211702 * *bpf_socket*, which must be a full socket. The *level* at
@@ -1947,7 +1928,7 @@ union bpf_attr { · 225 unmodified lines
19471928 * Return
19481929 * 0 on success, or a negative error in case of failure.
19491930 *
1950− * int bpf_get_stack(struct pt_regs *regs, void *buf, u32 size, u64 flags)
1931+ * int bpf_get_stack(void *ctx, void *buf, u32 size, u64 flags)
19511932 * Description
19521933 * Return a user or a kernel stack in bpf program provided buffer.
19531934 * To achieve this, the helper needs *ctx*, which is a pointer
@@ -1980,7 +1961,7 @@ union bpf_attr { · 26 unmodified lines
19801961 * A non-negative value equal to or less than *size* on success,
19811962 * or a negative error in case of failure.
19821963 *
1983− * int bpf_skb_load_bytes_relative(const struct sk_buff *skb, u32 offset, void *to, u32 len, u32 start_header)
1964+ * int bpf_skb_load_bytes_relative(const void *skb, u32 offset, void *to, u32 len, u32 start_header)
19841965 * Description
19851966 * This helper is similar to **bpf_skb_load_bytes**\ () in that
19861967 * it provides an easy way to load *len* bytes from *offset*
@@ -2033,7 +2014,7 @@ union bpf_attr { · 46 unmodified lines
20332014 * * > 0 one of **BPF_FIB_LKUP_RET_** codes explaining why the
20342015 * packet is not forwarded or needs assist from full stack
20352016 *
2036− * int bpf_sock_hash_update(struct bpf_sock_ops_kern *skops, struct bpf_map *map, void *key, u64 flags)
2017+ * int bpf_sock_hash_update(struct bpf_sock_ops *skops, struct bpf_map *map, void *key, u64 flags)
20372018 * Description
20382019 * Add an entry to, or update a sockhash *map* referencing sockets.
20392020 * The *skops* is used as a new value for the entry associated to
@@ -2392,7 +2373,7 @@ union bpf_attr { · 352 unmodified lines
23922373 * Return
23932374 * 0 on success, or a negative error in case of failure.
23942375 *
2395− * int bpf_msg_push_data(struct sk_buff *skb, u32 start, u32 len, u64 flags)
2376+ * int bpf_msg_push_data(struct sk_msg_buff *msg, u32 start, u32 len, u64 flags)
23962377 * Description
23972378 * For socket policies, insert *len* bytes into *msg* at offset
23982379 * *start*.
@@ -2408,9 +2389,9 @@ union bpf_attr { · 9 unmodified lines
24082389 * Return
24092390 * 0 on success, or a negative error in case of failure.
24102391 *
2411− * int bpf_msg_pop_data(struct sk_msg_buff *msg, u32 start, u32 pop, u64 flags)
2392+ * int bpf_msg_pop_data(struct sk_msg_buff *msg, u32 start, u32 len, u64 flags)
24122393 * Description
2413− * Will remove *pop* bytes from a *msg* starting at byte *start*.
2394+ * Will remove *len* bytes from a *msg* starting at byte *start*.
24142395 * This may result in **ENOMEM** errors under certain situations if
24152396 * an allocation and copy are required due to a full ring buffer.
24162397 * However, the helper will try to avoid doing the allocation
@@ -2505,7 +2486,7 @@ union bpf_attr { · 88 unmodified lines
25052486 * A **struct bpf_tcp_sock** pointer on success, or **NULL** in
25062487 * case of failure.
25072488 *
2508− * int bpf_skb_ecn_set_ce(struct sk_buf *skb)
2489+ * int bpf_skb_ecn_set_ce(struct sk_buff *skb)
25092490 * Description
25102491 * Set ECN (Explicit Congestion Notification) field of IP header
25112492 * to **CE** (Congestion Encountered) if current value is **ECT**
@@ -2750,6 +2731,96 @@ union bpf_attr { · 238 unmodified lines
27502731 * **-EOPNOTSUPP** kernel configuration does not enable SYN cookies
27512732 *
27522733 * **-EPROTONOSUPPORT** IP packet version is not 4 or 6
2734+ *
2735+ * int bpf_skb_output(void *ctx, struct bpf_map *map, u64 flags, void *data, u64 size)
2736+ * Description
2737+ * Write raw *data* blob into a special BPF perf event held by
2738+ * *map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. This perf
2739+ * event must have the following attributes: **PERF_SAMPLE_RAW**
2740+ * as **sample_type**, **PERF_TYPE_SOFTWARE** as **type**, and
2741+ * **PERF_COUNT_SW_BPF_OUTPUT** as **config**.
2742+ *
2743+ * The *flags* are used to indicate the index in *map* for which
2744+ * the value must be put, masked with **BPF_F_INDEX_MASK**.
2745+ * Alternatively, *flags* can be set to **BPF_F_CURRENT_CPU**
2746+ * to indicate that the index of the current CPU core should be
2747+ * used.
2748+ *
2749+ * The value to write, of *size*, is passed through eBPF stack and
2750+ * pointed by *data*.
2751+ *
2752+ * *ctx* is a pointer to in-kernel struct sk_buff.
2753+ *
2754+ * This helper is similar to **bpf_perf_event_output**\ () but
2755+ * restricted to raw_tracepoint bpf programs.
2756+ * Return
2757+ * 0 on success, or a negative error in case of failure.
2758+ *
2759+ * int bpf_probe_read_user(void *dst, u32 size, const void *unsafe_ptr)
2760+ * Description
2761+ * Safely attempt to read *size* bytes from user space address
2762+ * *unsafe_ptr* and store the data in *dst*.
2763+ * Return
2764+ * 0 on success, or a negative error in case of failure.
2765+ *
2766+ * int bpf_probe_read_kernel(void *dst, u32 size, const void *unsafe_ptr)
2767+ * Description
2768+ * Safely attempt to read *size* bytes from kernel space address
2769+ * *unsafe_ptr* and store the data in *dst*.
2770+ * Return
2771+ * 0 on success, or a negative error in case of failure.
2772+ *
2773+ * int bpf_probe_read_user_str(void *dst, u32 size, const void *unsafe_ptr)
2774+ * Description
2775+ * Copy a NUL terminated string from an unsafe user address
2776+ * *unsafe_ptr* to *dst*. The *size* should include the
2777+ * terminating NUL byte. In case the string length is smaller than
2778+ * *size*, the target is not padded with further NUL bytes. If the
2779+ * string length is larger than *size*, just *size*-1 bytes are
2780+ * copied and the last byte is set to NUL.
2781+ *
2782+ * On success, the length of the copied string is returned. This
2783+ * makes this helper useful in tracing programs for reading
2784+ * strings, and more importantly to get its length at runtime. See
2785+ * the following snippet:
2786+ *
2787+ * ::
2788+ *
2789+ * SEC("kprobe/sys_open")
2790+ * void bpf_sys_open(struct pt_regs *ctx)
2791+ * {
2792+ * char buf[PATHLEN]; // PATHLEN is defined to 256
2793+ * int res = bpf_probe_read_user_str(buf, sizeof(buf),
2794+ * ctx->di);
2795+ *
2796+ * // Consume buf, for example push it to
2797+ * // userspace via bpf_perf_event_output(); we
2798+ * // can use res (the string length) as event
2799+ * // size, after checking its boundaries.
2800+ * }
2801+ *
2802+ * In comparison, using **bpf_probe_read_user()** helper here
2803+ * instead to read the string would require to estimate the length
2804+ * at compile time, and would often result in copying more memory
2805+ * than necessary.
2806+ *
2807+ * Another useful use case is when parsing individual process
2808+ * arguments or individual environment variables navigating
2809+ * *current*\ **->mm->arg_start** and *current*\
2810+ * **->mm->env_start**: using this helper and the return value,
2811+ * one can quickly iterate at the right offset of the memory area.
2812+ * Return
2813+ * On success, the strictly positive length of the string,
2814+ * including the trailing NUL character. On error, a negative
2815+ * value.
2816+ *
2817+ * int bpf_probe_read_kernel_str(void *dst, u32 size, const void *unsafe_ptr)
2818+ * Description
2819+ * Copy a NUL terminated string from an unsafe kernel address *unsafe_ptr*
2820+ * to *dst*. Same semantics as with bpf_probe_read_user_str() apply.
2821+ * Return
2822+ * On success, the strictly positive length of the string, including
2823+ * the trailing NUL character. On error, a negative value.
27532824 */
27542825 #define __BPF_FUNC_MAPPER(FN) \
27552826 FN(unspec), \
@@ -2862,7 +2933,12 @@ union bpf_attr { · 106 unmodified lines
28622933 FN(sk_storage_get), \
28632934 FN(sk_storage_delete), \
28642935 FN(send_signal), \
2865− FN(tcp_gen_syncookie),
2936+ FN(tcp_gen_syncookie), \
2937+ FN(skb_output), \
2938+ FN(probe_read_user), \
2939+ FN(probe_read_kernel), \
2940+ FN(probe_read_user_str), \
2941+ FN(probe_read_kernel_str),
28662942
28672943 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
28682944 * function eBPF program intends to call
include/uapi/linux/btrfs.h+4−1
@@ -270,6 +270,7 @@ struct btrfs_ioctl_fs_info_args { · 269 unmodified lines
270270 #define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8)
271271 #define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9)
272272 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
273+#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
273274
274275 struct btrfs_ioctl_feature_flags {
275276 __u64 compat_flags;
@@ -831,7 +832,9 @@ enum btrfs_err_code { · 555 unmodified lines
831832 BTRFS_ERROR_DEV_TGT_REPLACE,
832833 BTRFS_ERROR_DEV_MISSING_NOT_FOUND,
833834 BTRFS_ERROR_DEV_ONLY_WRITABLE,
834− BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS
835+ BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS,
836+ BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET,
837+ BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET,
835838 };
836839
837840 #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \
include/uapi/linux/btrfs_tree.h+18−5
@@ -302,6 +302,9 @@ · 301 unmodified lines
302302 /* csum types */
303303 enum btrfs_csum_type {
304304 BTRFS_CSUM_TYPE_CRC32 = 0,
305+ BTRFS_CSUM_TYPE_XXHASH = 1,
306+ BTRFS_CSUM_TYPE_SHA256 = 2,
307+ BTRFS_CSUM_TYPE_BLAKE2 = 3,
305308 };
306309
307310 /*
@@ -737,10 +740,12 @@ struct btrfs_balance_item { · 429 unmodified lines
737740 __le64 unused[4];
738741 } __attribute__ ((__packed__));
739742
740−#define BTRFS_FILE_EXTENT_INLINE 0
741−#define BTRFS_FILE_EXTENT_REG 1
742−#define BTRFS_FILE_EXTENT_PREALLOC 2
743−#define BTRFS_FILE_EXTENT_TYPES 2
743+enum {
744+ BTRFS_FILE_EXTENT_INLINE = 0,
745+ BTRFS_FILE_EXTENT_REG = 1,
746+ BTRFS_FILE_EXTENT_PREALLOC = 2,
747+ BTRFS_NR_FILE_EXTENT_TYPES = 3,
748+};
744749
745750 struct btrfs_file_extent_item {
746751 /*
@@ -836,6 +841,8 @@ struct btrfs_dev_replace_item { · 89 unmodified lines
836841 #define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
837842 #define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7)
838843 #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
844+#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
845+#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
839846 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \
840847 BTRFS_SPACE_INFO_GLOBAL_RSV)
841848
@@ -847,6 +854,8 @@ enum btrfs_raid_types { · 5 unmodified lines
847854 BTRFS_RAID_SINGLE,
848855 BTRFS_RAID_RAID5,
849856 BTRFS_RAID_RAID6,
857+ BTRFS_RAID_RAID1C3,
858+ BTRFS_RAID_RAID1C4,
850859 BTRFS_NR_RAID_TYPES
851860 };
852861
@@ -856,6 +865,8 @@ enum btrfs_raid_types { · 3 unmodified lines
856865
857866 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \
858867 BTRFS_BLOCK_GROUP_RAID1 | \
868+ BTRFS_BLOCK_GROUP_RAID1C3 | \
869+ BTRFS_BLOCK_GROUP_RAID1C4 | \
859870 BTRFS_BLOCK_GROUP_RAID5 | \
860871 BTRFS_BLOCK_GROUP_RAID6 | \
861872 BTRFS_BLOCK_GROUP_DUP | \
@@ -863,7 +874,9 @@ enum btrfs_raid_types { · 1 unmodified line
863874 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | \
864875 BTRFS_BLOCK_GROUP_RAID6)
865876
866−#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1)
877+#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1 | \
878+ BTRFS_BLOCK_GROUP_RAID1C3 | \
879+ BTRFS_BLOCK_GROUP_RAID1C4)
867880
868881 /*
869882 * We need a bit for restriper to be able to tell when chunks of type
include/uapi/linux/can.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
1+/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
22 /*
33 * linux/can.h
44 *
include/uapi/linux/can/bcm.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
1+/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
22 /*
33 * linux/can/bcm.h
44 *
include/uapi/linux/can/error.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
1+/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
22 /*
33 * linux/can/error.h
44 *
include/uapi/linux/can/gw.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
1+/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
22 /*
33 * linux/can/gw.h
44 *
include/uapi/linux/can/j1939.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
1+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
22 /*
33 * j1939.h
44 *
include/uapi/linux/can/netlink.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
1+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
22 /*
33 * linux/can/netlink.h
44 *
include/uapi/linux/can/raw.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
1+/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
22 /*
33 * linux/can/raw.h
44 *
include/uapi/linux/can/vxcan.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
1+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
22 #ifndef _UAPI_CAN_VXCAN_H
33 #define _UAPI_CAN_VXCAN_H
44
include/uapi/linux/cec-funcs.h+18−16
@@ -923,7 +923,8 @@ static inline void cec_msg_give_deck_status(struct cec_msg *msg, · 922 unmodified lines
923923 msg->len = 3;
924924 msg->msg[1] = CEC_MSG_GIVE_DECK_STATUS;
925925 msg->msg[2] = status_req;
926− msg->reply = reply ? CEC_MSG_DECK_STATUS : 0;
926+ msg->reply = (reply && status_req != CEC_OP_STATUS_REQ_OFF) ?
927+ CEC_MSG_DECK_STATUS : 0;
927928 }
928929
929930 static inline void cec_ops_give_deck_status(const struct cec_msg *msg,
@@ -1027,7 +1028,8 @@ static inline void cec_msg_give_tuner_device_status(struct cec_msg *msg, · 97 unmodified lines
10271028 msg->len = 3;
10281029 msg->msg[1] = CEC_MSG_GIVE_TUNER_DEVICE_STATUS;
10291030 msg->msg[2] = status_req;
1030− msg->reply = reply ? CEC_MSG_TUNER_DEVICE_STATUS : 0;
1031+ msg->reply = (reply && status_req != CEC_OP_STATUS_REQ_OFF) ?
1032+ CEC_MSG_TUNER_DEVICE_STATUS : 0;
10311033 }
10321034
10331035 static inline void cec_ops_give_tuner_device_status(const struct cec_msg *msg,
@@ -1302,17 +1304,17 @@ static inline void cec_msg_user_control_pressed(struct cec_msg *msg, · 268 unmodified lines
13021304 if (!ui_cmd->has_opt_arg)
13031305 return;
13041306 switch (ui_cmd->ui_cmd) {
1305− case 0x56:
1306− case 0x57:
1307− case 0x60:
1308− case 0x68:
1309− case 0x69:
1310− case 0x6a:
1307+ case CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE:
1308+ case CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION:
1309+ case CEC_OP_UI_CMD_PLAY_FUNCTION:
1310+ case CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION:
1311+ case CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION:
1312+ case CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION:
13111313 /* The optional operand is one byte for all these ui commands */
13121314 msg->len++;
13131315 msg->msg[3] = ui_cmd->play_mode;
13141316 break;
1315− case 0x67:
1317+ case CEC_OP_UI_CMD_TUNE_FUNCTION:
13161318 msg->len += 4;
13171319 msg->msg[3] = (ui_cmd->channel_identifier.channel_number_fmt << 2) |
13181320 (ui_cmd->channel_identifier.major >> 8);
@@ -1331,17 +1333,17 @@ static inline void cec_ops_user_control_pressed(const struct cec_msg *msg, · 12 unmodified lines
13311333 if (msg->len == 3)
13321334 return;
13331335 switch (ui_cmd->ui_cmd) {
1334− case 0x56:
1335− case 0x57:
1336− case 0x60:
1337− case 0x68:
1338− case 0x69:
1339− case 0x6a:
1336+ case CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE:
1337+ case CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION:
1338+ case CEC_OP_UI_CMD_PLAY_FUNCTION:
1339+ case CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION:
1340+ case CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION:
1341+ case CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION:
13401342 /* The optional operand is one byte for all these ui commands */
13411343 ui_cmd->play_mode = msg->msg[3];
13421344 ui_cmd->has_opt_arg = 1;
13431345 break;
1344− case 0x67:
1346+ case CEC_OP_UI_CMD_TUNE_FUNCTION:
13451347 if (msg->len < 7)
13461348 break;
13471349 ui_cmd->has_opt_arg = 1;
include/uapi/linux/cec.h+131−2
@@ -317,6 +317,8 @@ static inline int cec_is_unconfigured(__u16 log_addr_mask) · 316 unmodified lines
317317 #define CEC_CAP_NEEDS_HPD (1 << 6)
318318 /* Hardware can monitor CEC pin transitions */
319319 #define CEC_CAP_MONITOR_PIN (1 << 7)
320+/* CEC_ADAP_G_CONNECTOR_INFO is available */
321+#define CEC_CAP_CONNECTOR_INFO (1 << 8)
320322
321323 /**
322324 * struct cec_caps - CEC capabilities structure.
@@ -375,6 +377,34 @@ struct cec_log_addrs { · 52 unmodified lines
375377 /* CDC-Only device: supports only CDC messages */
376378 #define CEC_LOG_ADDRS_FL_CDC_ONLY (1 << 2)
377379
380+/**
381+ * struct cec_drm_connector_info - tells which drm connector is
382+ * associated with the CEC adapter.
383+ * @card_no: drm card number
384+ * @connector_id: drm connector ID
385+ */
386+struct cec_drm_connector_info {
387+ __u32 card_no;
388+ __u32 connector_id;
389+};
390+
391+#define CEC_CONNECTOR_TYPE_NO_CONNECTOR 0
392+#define CEC_CONNECTOR_TYPE_DRM 1
393+
394+/**
395+ * struct cec_connector_info - tells if and which connector is
396+ * associated with the CEC adapter.
397+ * @type: connector type (if any)
398+ * @drm: drm connector info
399+ */
400+struct cec_connector_info {
401+ __u32 type;
402+ union {
403+ struct cec_drm_connector_info drm;
404+ __u32 raw[16];
405+ };
406+};
407+
378408 /* Events */
379409
380410 /* Event that occurs when the adapter state changes */
@@ -398,10 +428,17 @@ struct cec_log_addrs { · 17 unmodified lines
398428 * struct cec_event_state_change - used when the CEC adapter changes state.
399429 * @phys_addr: the current physical address
400430 * @log_addr_mask: the current logical address mask
431+ * @have_conn_info: if non-zero, then HDMI connector information is available.
432+ * This field is only valid if CEC_CAP_CONNECTOR_INFO is set. If that
433+ * capability is set and @have_conn_info is zero, then that indicates
434+ * that the HDMI connector device is not instantiated, either because
435+ * the HDMI driver is still configuring the device or because the HDMI
436+ * device was unbound.
401437 */
402438 struct cec_event_state_change {
403439 __u16 phys_addr;
404440 __u16 log_addr_mask;
441+ __u16 have_conn_info;
405442 };
406443
407444 /**
@@ -476,6 +513,9 @@ struct cec_event { · 68 unmodified lines
476513 #define CEC_G_MODE _IOR('a', 8, __u32)
477514 #define CEC_S_MODE _IOW('a', 9, __u32)
478515
516+/* Get the connector info */
517+#define CEC_ADAP_G_CONNECTOR_INFO _IOR('a', 10, struct cec_connector_info)
518+
479519 /*
480520 * The remainder of this header defines all CEC messages and operands.
481521 * The format matters since it the cec-ctl utility parses it to generate
@@ -768,8 +808,8 @@ struct cec_event { · 286 unmodified lines
768808 #define CEC_MSG_SELECT_DIGITAL_SERVICE 0x93
769809 #define CEC_MSG_TUNER_DEVICE_STATUS 0x07
770810 /* Recording Flag Operand (rec_flag) */
771−#define CEC_OP_REC_FLAG_USED 0
772−#define CEC_OP_REC_FLAG_NOT_USED 1
811+#define CEC_OP_REC_FLAG_NOT_USED 0
812+#define CEC_OP_REC_FLAG_USED 1
773813 /* Tuner Display Info Operand (tuner_display_info) */
774814 #define CEC_OP_TUNER_DISPLAY_INFO_DIGITAL 0
775815 #define CEC_OP_TUNER_DISPLAY_INFO_NONE 1
@@ -820,6 +860,95 @@ struct cec_event { · 44 unmodified lines
820860 #define CEC_OP_MENU_STATE_DEACTIVATED 0x01
821861
822862 #define CEC_MSG_USER_CONTROL_PRESSED 0x44
863+/* UI Command Operand (ui_cmd) */
864+#define CEC_OP_UI_CMD_SELECT 0x00
865+#define CEC_OP_UI_CMD_UP 0x01
866+#define CEC_OP_UI_CMD_DOWN 0x02
867+#define CEC_OP_UI_CMD_LEFT 0x03
868+#define CEC_OP_UI_CMD_RIGHT 0x04
869+#define CEC_OP_UI_CMD_RIGHT_UP 0x05
870+#define CEC_OP_UI_CMD_RIGHT_DOWN 0x06
871+#define CEC_OP_UI_CMD_LEFT_UP 0x07
872+#define CEC_OP_UI_CMD_LEFT_DOWN 0x08
873+#define CEC_OP_UI_CMD_DEVICE_ROOT_MENU 0x09
874+#define CEC_OP_UI_CMD_DEVICE_SETUP_MENU 0x0a
875+#define CEC_OP_UI_CMD_CONTENTS_MENU 0x0b
876+#define CEC_OP_UI_CMD_FAVORITE_MENU 0x0c
877+#define CEC_OP_UI_CMD_BACK 0x0d
878+#define CEC_OP_UI_CMD_MEDIA_TOP_MENU 0x10
879+#define CEC_OP_UI_CMD_MEDIA_CONTEXT_SENSITIVE_MENU 0x11
880+#define CEC_OP_UI_CMD_NUMBER_ENTRY_MODE 0x1d
881+#define CEC_OP_UI_CMD_NUMBER_11 0x1e
882+#define CEC_OP_UI_CMD_NUMBER_12 0x1f
883+#define CEC_OP_UI_CMD_NUMBER_0_OR_NUMBER_10 0x20
884+#define CEC_OP_UI_CMD_NUMBER_1 0x21
885+#define CEC_OP_UI_CMD_NUMBER_2 0x22
886+#define CEC_OP_UI_CMD_NUMBER_3 0x23
887+#define CEC_OP_UI_CMD_NUMBER_4 0x24
888+#define CEC_OP_UI_CMD_NUMBER_5 0x25
889+#define CEC_OP_UI_CMD_NUMBER_6 0x26
890+#define CEC_OP_UI_CMD_NUMBER_7 0x27
891+#define CEC_OP_UI_CMD_NUMBER_8 0x28
892+#define CEC_OP_UI_CMD_NUMBER_9 0x29
893+#define CEC_OP_UI_CMD_DOT 0x2a
894+#define CEC_OP_UI_CMD_ENTER 0x2b
895+#define CEC_OP_UI_CMD_CLEAR 0x2c
896+#define CEC_OP_UI_CMD_NEXT_FAVORITE 0x2f
897+#define CEC_OP_UI_CMD_CHANNEL_UP 0x30
898+#define CEC_OP_UI_CMD_CHANNEL_DOWN 0x31
899+#define CEC_OP_UI_CMD_PREVIOUS_CHANNEL 0x32
900+#define CEC_OP_UI_CMD_SOUND_SELECT 0x33
901+#define CEC_OP_UI_CMD_INPUT_SELECT 0x34
902+#define CEC_OP_UI_CMD_DISPLAY_INFORMATION 0x35
903+#define CEC_OP_UI_CMD_HELP 0x36
904+#define CEC_OP_UI_CMD_PAGE_UP 0x37
905+#define CEC_OP_UI_CMD_PAGE_DOWN 0x38
906+#define CEC_OP_UI_CMD_POWER 0x40
907+#define CEC_OP_UI_CMD_VOLUME_UP 0x41
908+#define CEC_OP_UI_CMD_VOLUME_DOWN 0x42
909+#define CEC_OP_UI_CMD_MUTE 0x43
910+#define CEC_OP_UI_CMD_PLAY 0x44
911+#define CEC_OP_UI_CMD_STOP 0x45
912+#define CEC_OP_UI_CMD_PAUSE 0x46
913+#define CEC_OP_UI_CMD_RECORD 0x47
914+#define CEC_OP_UI_CMD_REWIND 0x48
915+#define CEC_OP_UI_CMD_FAST_FORWARD 0x49
916+#define CEC_OP_UI_CMD_EJECT 0x4a
917+#define CEC_OP_UI_CMD_SKIP_FORWARD 0x4b
918+#define CEC_OP_UI_CMD_SKIP_BACKWARD 0x4c
919+#define CEC_OP_UI_CMD_STOP_RECORD 0x4d
920+#define CEC_OP_UI_CMD_PAUSE_RECORD 0x4e
921+#define CEC_OP_UI_CMD_ANGLE 0x50
922+#define CEC_OP_UI_CMD_SUB_PICTURE 0x51
923+#define CEC_OP_UI_CMD_VIDEO_ON_DEMAND 0x52
924+#define CEC_OP_UI_CMD_ELECTRONIC_PROGRAM_GUIDE 0x53
925+#define CEC_OP_UI_CMD_TIMER_PROGRAMMING 0x54
926+#define CEC_OP_UI_CMD_INITIAL_CONFIGURATION 0x55
927+#define CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE 0x56
928+#define CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION 0x57
929+#define CEC_OP_UI_CMD_AUDIO_DESCRIPTION 0x58
930+#define CEC_OP_UI_CMD_INTERNET 0x59
931+#define CEC_OP_UI_CMD_3D_MODE 0x5a
932+#define CEC_OP_UI_CMD_PLAY_FUNCTION 0x60
933+#define CEC_OP_UI_CMD_PAUSE_PLAY_FUNCTION 0x61
934+#define CEC_OP_UI_CMD_RECORD_FUNCTION 0x62
935+#define CEC_OP_UI_CMD_PAUSE_RECORD_FUNCTION 0x63
936+#define CEC_OP_UI_CMD_STOP_FUNCTION 0x64
937+#define CEC_OP_UI_CMD_MUTE_FUNCTION 0x65
938+#define CEC_OP_UI_CMD_RESTORE_VOLUME_FUNCTION 0x66
939+#define CEC_OP_UI_CMD_TUNE_FUNCTION 0x67
940+#define CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION 0x68
941+#define CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION 0x69
942+#define CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION 0x6a
943+#define CEC_OP_UI_CMD_POWER_TOGGLE_FUNCTION 0x6b
944+#define CEC_OP_UI_CMD_POWER_OFF_FUNCTION 0x6c
945+#define CEC_OP_UI_CMD_POWER_ON_FUNCTION 0x6d
946+#define CEC_OP_UI_CMD_F1_BLUE 0x71
947+#define CEC_OP_UI_CMD_F2_RED 0x72
948+#define CEC_OP_UI_CMD_F3_GREEN 0x73
949+#define CEC_OP_UI_CMD_F4_YELLOW 0x74
950+#define CEC_OP_UI_CMD_F5 0x75
951+#define CEC_OP_UI_CMD_DATA 0x76
823952 /* UI Broadcast Type Operand (ui_bcast_type) */
824953 #define CEC_OP_UI_BCAST_TYPE_TOGGLE_ALL 0x00
825954 #define CEC_OP_UI_BCAST_TYPE_TOGGLE_DIG_ANA 0x01
include/uapi/linux/chio.h+4−7
@@ -3,6 +3,9 @@ · 2 unmodified lines
33 * ioctl interface for the scsi media changer driver
44 */
55
6+#ifndef _UAPI_LINUX_CHIO_H
7+#define _UAPI_LINUX_CHIO_H
8+
69 /* changer element types */
710 #define CHET_MT 0 /* media transport element (robot) */
811 #define CHET_ST 1 /* storage element (media slots) */
@@ -160,10 +163,4 @@ struct changer_set_voltag { · 151 unmodified lines
160163 #define CHIOSVOLTAG _IOW('c',18,struct changer_set_voltag)
161164 #define CHIOGVPARAMS _IOR('c',19,struct changer_vendor_params)
162165
163−/* ---------------------------------------------------------------------- */
164−
165−/*
166− * Local variables:
167− * c-basic-offset: 8
168− * End:
169− */
166+#endif /* _UAPI_LINUX_CHIO_H */
include/uapi/linux/cyclades.h+3−3
@@ -83,9 +83,9 @@ struct cyclades_monitor { · 82 unmodified lines
8383 * open)
8484 */
8585 struct cyclades_idle_stats {
86− __kernel_time_t in_use; /* Time device has been in use (secs) */
87− __kernel_time_t recv_idle; /* Time since last char received (secs) */
88− __kernel_time_t xmit_idle; /* Time since last char transmitted (secs) */
86+ __kernel_old_time_t in_use; /* Time device has been in use (secs) */
87+ __kernel_old_time_t recv_idle; /* Time since last char received (secs) */
88+ __kernel_old_time_t xmit_idle; /* Time since last char transmitted (secs) */
8989 unsigned long recv_bytes; /* Bytes received */
9090 unsigned long xmit_bytes; /* Bytes transmitted */
9191 unsigned long overruns; /* Input overruns */
include/uapi/linux/dcbnl.h+1−1
@@ -286,7 +286,7 @@ struct dcbmsg { · 285 unmodified lines
286286 * @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported
287287 * @DCB_CMD_SNUMTCS: set the number of traffic classes
288288 * @DCB_CMD_GBCN: set backward congestion notification configuration
289− * @DCB_CMD_SBCN: get backward congestion notification configration.
289+ * @DCB_CMD_SBCN: get backward congestion notification configuration.
290290 * @DCB_CMD_GAPP: get application protocol configuration
291291 * @DCB_CMD_SAPP: set application protocol configuration
292292 * @DCB_CMD_IEEE_SET: set IEEE 802.1Qaz configuration
include/uapi/linux/devlink.h+5−0
@@ -421,6 +421,11 @@ enum devlink_attr { · 420 unmodified lines
421421
422422 DEVLINK_ATTR_RELOAD_FAILED, /* u8 0 or 1 */
423423
424+ DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS, /* u64 */
425+
426+ DEVLINK_ATTR_NETNS_FD, /* u32 */
427+ DEVLINK_ATTR_NETNS_PID, /* u32 */
428+ DEVLINK_ATTR_NETNS_ID, /* u32 */
424429 /* add new attributes above here, update the policy in devlink.c */
425430
426431 __DEVLINK_ATTR_MAX,
include/uapi/linux/elfcore.h+4−4
@@ -53,10 +53,10 @@ struct elf_prstatus · 52 unmodified lines
5353 pid_t pr_ppid;
5454 pid_t pr_pgrp;
5555 pid_t pr_sid;
56− struct timeval pr_utime; /* User time */
57− struct timeval pr_stime; /* System time */
58− struct timeval pr_cutime; /* Cumulative user time */
59− struct timeval pr_cstime; /* Cumulative system time */
56+ struct __kernel_old_timeval pr_utime; /* User time */
57+ struct __kernel_old_timeval pr_stime; /* System time */
58+ struct __kernel_old_timeval pr_cutime; /* Cumulative user time */
59+ struct __kernel_old_timeval pr_cstime; /* Cumulative system time */
6060 #if 0
6161 long pr_instr; /* Current instruction */
6262 #endif
include/uapi/linux/errqueue.h+7−0
@@ -37,9 +37,16 @@ struct sock_extended_err { · 36 unmodified lines
3737 * The timestamping interfaces SO_TIMESTAMPING, MSG_TSTAMP_*
3838 * communicate network timestamps by passing this struct in a cmsg with
3939 * recvmsg(). See Documentation/networking/timestamping.txt for details.
40+ * User space sees a timespec definition that matches either
41+ * __kernel_timespec or __kernel_old_timespec, in the kernel we
42+ * require two structure definitions to provide both.
4043 */
4144 struct scm_timestamping {
45+#ifdef __KERNEL__
46+ struct __kernel_old_timespec ts[3];
47+#else
4248 struct timespec ts[3];
49+#endif
4350 };
4451
4552 struct scm_timestamping64 {
include/uapi/linux/ethtool.h+6−0
@@ -1507,6 +1507,11 @@ enum ethtool_link_mode_bit_indices { · 1506 unmodified lines
15071507 ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66,
15081508 ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 67,
15091509 ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 68,
1510+ ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 69,
1511+ ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 70,
1512+ ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 71,
1513+ ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 72,
1514+ ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 73,
15101515
15111516 /* must be last entry */
15121517 __ETHTOOL_LINK_MODE_MASK_NBITS
@@ -1618,6 +1623,7 @@ enum ethtool_link_mode_bit_indices { · 105 unmodified lines
16181623 #define SPEED_56000 56000
16191624 #define SPEED_100000 100000
16201625 #define SPEED_200000 200000
1626+#define SPEED_400000 400000
16211627
16221628 #define SPEED_UNKNOWN -1
16231629
include/uapi/linux/fcntl.h+8−1
@@ -58,13 +58,20 @@ · 57 unmodified lines
5858 * Valid hint values for F_{GET,SET}_RW_HINT. 0 is "not set", or can be
5959 * used to clear any hints previously set.
6060 */
61−#define RWF_WRITE_LIFE_NOT_SET 0
61+#define RWH_WRITE_LIFE_NOT_SET 0
6262 #define RWH_WRITE_LIFE_NONE 1
6363 #define RWH_WRITE_LIFE_SHORT 2
6464 #define RWH_WRITE_LIFE_MEDIUM 3
6565 #define RWH_WRITE_LIFE_LONG 4
6666 #define RWH_WRITE_LIFE_EXTREME 5
6767
68+/*
69+ * The originally introduced spelling is remained from the first
70+ * versions of the patch set that introduced the feature, see commit
71+ * v4.13-rc1~212^2~51.
72+ */
73+#define RWF_WRITE_LIFE_NOT_SET RWH_WRITE_LIFE_NOT_SET
74+
6875 /*
6976 * Types of directory notifications that may be requested.
7077 */
include/uapi/linux/fscrypt.h+2−1
@@ -17,7 +17,8 @@ · 16 unmodified lines
1717 #define FSCRYPT_POLICY_FLAGS_PAD_32 0x03
1818 #define FSCRYPT_POLICY_FLAGS_PAD_MASK 0x03
1919 #define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04
20−#define FSCRYPT_POLICY_FLAGS_VALID 0x07
20+#define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08
21+#define FSCRYPT_POLICY_FLAGS_VALID 0x0F
2122
2223 /* Encryption algorithms */
2324 #define FSCRYPT_MODE_AES_256_XTS 1
include/uapi/linux/fuse.h+37−0
@@ -38,6 +38,43 @@ · 37 unmodified lines
3838 *
3939 * Protocol changelog:
4040 *
41+ * 7.1:
42+ * - add the following messages:
43+ * FUSE_SETATTR, FUSE_SYMLINK, FUSE_MKNOD, FUSE_MKDIR, FUSE_UNLINK,
44+ * FUSE_RMDIR, FUSE_RENAME, FUSE_LINK, FUSE_OPEN, FUSE_READ, FUSE_WRITE,
45+ * FUSE_RELEASE, FUSE_FSYNC, FUSE_FLUSH, FUSE_SETXATTR, FUSE_GETXATTR,
46+ * FUSE_LISTXATTR, FUSE_REMOVEXATTR, FUSE_OPENDIR, FUSE_READDIR,
47+ * FUSE_RELEASEDIR
48+ * - add padding to messages to accommodate 32-bit servers on 64-bit kernels
49+ *
50+ * 7.2:
51+ * - add FOPEN_DIRECT_IO and FOPEN_KEEP_CACHE flags
52+ * - add FUSE_FSYNCDIR message
53+ *
54+ * 7.3:
55+ * - add FUSE_ACCESS message
56+ * - add FUSE_CREATE message
57+ * - add filehandle to fuse_setattr_in
58+ *
59+ * 7.4:
60+ * - add frsize to fuse_kstatfs
61+ * - clean up request size limit checking
62+ *
63+ * 7.5:
64+ * - add flags and max_write to fuse_init_out
65+ *
66+ * 7.6:
67+ * - add max_readahead to fuse_init_in and fuse_init_out
68+ *
69+ * 7.7:
70+ * - add FUSE_INTERRUPT message
71+ * - add POSIX file lock support
72+ *
73+ * 7.8:
74+ * - add lock_owner and flags fields to fuse_release_in
75+ * - add FUSE_BMAP message
76+ * - add FUSE_DESTROY message
77+ *
4178 * 7.9:
4279 * - new fuse_getattr_in input argument of GETATTR
4380 * - add lk_flags in fuse_lk_in
include/uapi/linux/gen_stats.h+1−4
@@ -13,6 +13,7 @@ enum { · 12 unmodified lines
1313 TCA_STATS_RATE_EST64,
1414 TCA_STATS_PAD,
1515 TCA_STATS_BASIC_HW,
16+ TCA_STATS_PKT64,
1617 __TCA_STATS_MAX,
1718 };
1819 #define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
@@ -26,10 +27,6 @@ struct gnet_stats_basic { · 7 unmodified lines
2627 __u64 bytes;
2728 __u32 packets;
2829 };
29−struct gnet_stats_basic_packed {
30− __u64 bytes;
31− __u32 packets;
32−} __attribute__ ((packed));
3330
3431 /**
3532 * struct gnet_stats_rate_est - rate estimator
include/uapi/linux/gpio.h+24−0
@@ -33,6 +33,9 @@ struct gpiochip_info { · 32 unmodified lines
3333 #define GPIOLINE_FLAG_ACTIVE_LOW (1UL << 2)
3434 #define GPIOLINE_FLAG_OPEN_DRAIN (1UL << 3)
3535 #define GPIOLINE_FLAG_OPEN_SOURCE (1UL << 4)
36+#define GPIOLINE_FLAG_BIAS_PULL_UP (1UL << 5)
37+#define GPIOLINE_FLAG_BIAS_PULL_DOWN (1UL << 6)
38+#define GPIOLINE_FLAG_BIAS_DISABLE (1UL << 7)
3639
3740 /**
3841 * struct gpioline_info - Information about a certain GPIO line
@@ -62,6 +65,9 @@ struct gpioline_info { · 23 unmodified lines
6265 #define GPIOHANDLE_REQUEST_ACTIVE_LOW (1UL << 2)
6366 #define GPIOHANDLE_REQUEST_OPEN_DRAIN (1UL << 3)
6467 #define GPIOHANDLE_REQUEST_OPEN_SOURCE (1UL << 4)
68+#define GPIOHANDLE_REQUEST_BIAS_PULL_UP (1UL << 5)
69+#define GPIOHANDLE_REQUEST_BIAS_PULL_DOWN (1UL << 6)
70+#define GPIOHANDLE_REQUEST_BIAS_DISABLE (1UL << 7)
6571
6672 /**
6773 * struct gpiohandle_request - Information about a GPIO handle request
@@ -94,6 +100,24 @@ struct gpiohandle_request { · 26 unmodified lines
94100 int fd;
95101 };
96102
103+/**
104+ * struct gpiohandle_config - Configuration for a GPIO handle request
105+ * @flags: updated flags for the requested GPIO lines, such as
106+ * GPIOHANDLE_REQUEST_OUTPUT, GPIOHANDLE_REQUEST_ACTIVE_LOW etc, OR:ed
107+ * together
108+ * @default_values: if the GPIOHANDLE_REQUEST_OUTPUT is set in flags,
109+ * this specifies the default output value, should be 0 (low) or
110+ * 1 (high), anything else than 0 or 1 will be interpreted as 1 (high)
111+ * @padding: reserved for future use and should be zero filled
112+ */
113+struct gpiohandle_config {
114+ __u32 flags;
115+ __u8 default_values[GPIOHANDLES_MAX];
116+ __u32 padding[4]; /* padding for future use */
117+};
118+
119+#define GPIOHANDLE_SET_CONFIG_IOCTL _IOWR(0xB4, 0x0a, struct gpiohandle_config)
120+
97121 /**
98122 * struct gpiohandle_data - Information of values on a GPIO handle
99123 * @values: when getting the state of lines this contains the current
include/uapi/linux/if.h+1−0
@@ -33,6 +33,7 @@ · 32 unmodified lines
3333 #define IFNAMSIZ 16
3434 #endif /* __UAPI_DEF_IF_IFNAMSIZ */
3535 #define IFALIASZ 256
36+#define ALTIFNAMSIZ 128
3637 #include <linux/hdlc/ioctl.h>
3738
3839 /* For glibc compatibility. An empty enum does not compile. */
include/uapi/linux/if_link.h+2−0
@@ -167,6 +167,8 @@ enum { · 166 unmodified lines
167167 IFLA_NEW_IFINDEX,
168168 IFLA_MIN_MTU,
169169 IFLA_MAX_MTU,
170+ IFLA_PROP_LIST,
171+ IFLA_ALT_IFNAME, /* Alternative ifname */
170172 __IFLA_MAX
171173 };
172174
include/uapi/linux/input-event-codes.h+75−0
@@ -652,6 +652,81 @@ · 651 unmodified lines
652652 /* Electronic privacy screen control */
653653 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
654654
655+/*
656+ * Some keyboards have keys which do not have a defined meaning, these keys
657+ * are intended to be programmed / bound to macros by the user. For most
658+ * keyboards with these macro-keys the key-sequence to inject, or action to
659+ * take, is all handled by software on the host side. So from the kernel's
660+ * point of view these are just normal keys.
661+ *
662+ * The KEY_MACRO# codes below are intended for such keys, which may be labeled
663+ * e.g. G1-G18, or S1 - S30. The KEY_MACRO# codes MUST NOT be used for keys
664+ * where the marking on the key does indicate a defined meaning / purpose.
665+ *
666+ * The KEY_MACRO# codes MUST also NOT be used as fallback for when no existing
667+ * KEY_FOO define matches the marking / purpose. In this case a new KEY_FOO
668+ * define MUST be added.
669+ */
670+#define KEY_MACRO1 0x290
671+#define KEY_MACRO2 0x291
672+#define KEY_MACRO3 0x292
673+#define KEY_MACRO4 0x293
674+#define KEY_MACRO5 0x294
675+#define KEY_MACRO6 0x295
676+#define KEY_MACRO7 0x296
677+#define KEY_MACRO8 0x297
678+#define KEY_MACRO9 0x298
679+#define KEY_MACRO10 0x299
680+#define KEY_MACRO11 0x29a
681+#define KEY_MACRO12 0x29b
682+#define KEY_MACRO13 0x29c
683+#define KEY_MACRO14 0x29d
684+#define KEY_MACRO15 0x29e
685+#define KEY_MACRO16 0x29f
686+#define KEY_MACRO17 0x2a0
687+#define KEY_MACRO18 0x2a1
688+#define KEY_MACRO19 0x2a2
689+#define KEY_MACRO20 0x2a3
690+#define KEY_MACRO21 0x2a4
691+#define KEY_MACRO22 0x2a5
692+#define KEY_MACRO23 0x2a6
693+#define KEY_MACRO24 0x2a7
694+#define KEY_MACRO25 0x2a8
695+#define KEY_MACRO26 0x2a9
696+#define KEY_MACRO27 0x2aa
697+#define KEY_MACRO28 0x2ab
698+#define KEY_MACRO29 0x2ac
699+#define KEY_MACRO30 0x2ad
700+
701+/*
702+ * Some keyboards with the macro-keys described above have some extra keys
703+ * for controlling the host-side software responsible for the macro handling:
704+ * -A macro recording start/stop key. Note that not all keyboards which emit
705+ * KEY_MACRO_RECORD_START will also emit KEY_MACRO_RECORD_STOP if
706+ * KEY_MACRO_RECORD_STOP is not advertised, then KEY_MACRO_RECORD_START
707+ * should be interpreted as a recording start/stop toggle;
708+ * -Keys for switching between different macro (pre)sets, either a key for
709+ * cycling through the configured presets or keys to directly select a preset.
710+ */
711+#define KEY_MACRO_RECORD_START 0x2b0
712+#define KEY_MACRO_RECORD_STOP 0x2b1
713+#define KEY_MACRO_PRESET_CYCLE 0x2b2
714+#define KEY_MACRO_PRESET1 0x2b3
715+#define KEY_MACRO_PRESET2 0x2b4
716+#define KEY_MACRO_PRESET3 0x2b5
717+
718+/*
719+ * Some keyboards have a buildin LCD panel where the contents are controlled
720+ * by the host. Often these have a number of keys directly below the LCD
721+ * intended for controlling a menu shown on the LCD. These keys often don't
722+ * have any labeling so we just name them KEY_KBD_LCD_MENU#
723+ */
724+#define KEY_KBD_LCD_MENU1 0x2b8
725+#define KEY_KBD_LCD_MENU2 0x2b9
726+#define KEY_KBD_LCD_MENU3 0x2ba
727+#define KEY_KBD_LCD_MENU4 0x2bb
728+#define KEY_KBD_LCD_MENU5 0x2bc
729+
655730 #define BTN_TRIGGER_HAPPY 0x2c0
656731 #define BTN_TRIGGER_HAPPY1 0x2c0
657732 #define BTN_TRIGGER_HAPPY2 0x2c1
include/uapi/linux/io_uring.h+44−14
@@ -19,7 +19,10 @@ struct io_uring_sqe { · 18 unmodified lines
1919 __u8 flags; /* IOSQE_ flags */
2020 __u16 ioprio; /* ioprio for the request */
2121 __s32 fd; /* file descriptor to do IO on */
22− __u64 off; /* offset into file */
22+ union {
23+ __u64 off; /* offset into file */
24+ __u64 addr2;
25+ };
2326 __u64 addr; /* pointer to buffer or iovecs */
2427 __u32 len; /* buffer size or number of iovecs */
2528 union {
@@ -29,6 +32,8 @@ struct io_uring_sqe { · 3 unmodified lines
2932 __u32 sync_range_flags;
3033 __u32 msg_flags;
3134 __u32 timeout_flags;
35+ __u32 accept_flags;
36+ __u32 cancel_flags;
3237 };
3338 __u64 user_data; /* data to be passed back at completion time */
3439 union {
@@ -43,6 +48,7 @@ struct io_uring_sqe { · 8 unmodified lines
4348 #define IOSQE_FIXED_FILE (1U << 0) /* use fixed fileset */
4449 #define IOSQE_IO_DRAIN (1U << 1) /* issue after inflight IO */
4550 #define IOSQE_IO_LINK (1U << 2) /* links next sqe */
51+#define IOSQE_IO_HARDLINK (1U << 3) /* like LINK, but stronger */
4652
4753 /*
4854 * io_uring_setup() flags
@@ -50,25 +56,41 @@ struct io_uring_sqe { · 1 unmodified line
5056 #define IORING_SETUP_IOPOLL (1U << 0) /* io_context is polled */
5157 #define IORING_SETUP_SQPOLL (1U << 1) /* SQ poll thread */
5258 #define IORING_SETUP_SQ_AFF (1U << 2) /* sq_thread_cpu is valid */
53−
54−#define IORING_OP_NOP 0
55−#define IORING_OP_READV 1
56−#define IORING_OP_WRITEV 2
57−#define IORING_OP_FSYNC 3
58−#define IORING_OP_READ_FIXED 4
59−#define IORING_OP_WRITE_FIXED 5
60−#define IORING_OP_POLL_ADD 6
61−#define IORING_OP_POLL_REMOVE 7
62−#define IORING_OP_SYNC_FILE_RANGE 8
63−#define IORING_OP_SENDMSG 9
64−#define IORING_OP_RECVMSG 10
65−#define IORING_OP_TIMEOUT 11
59+#define IORING_SETUP_CQSIZE (1U << 3) /* app defines CQ size */
60+
61+enum {
62+ IORING_OP_NOP,
63+ IORING_OP_READV,
64+ IORING_OP_WRITEV,
65+ IORING_OP_FSYNC,
66+ IORING_OP_READ_FIXED,
67+ IORING_OP_WRITE_FIXED,
68+ IORING_OP_POLL_ADD,
69+ IORING_OP_POLL_REMOVE,
70+ IORING_OP_SYNC_FILE_RANGE,
71+ IORING_OP_SENDMSG,
72+ IORING_OP_RECVMSG,
73+ IORING_OP_TIMEOUT,
74+ IORING_OP_TIMEOUT_REMOVE,
75+ IORING_OP_ACCEPT,
76+ IORING_OP_ASYNC_CANCEL,
77+ IORING_OP_LINK_TIMEOUT,
78+ IORING_OP_CONNECT,
79+
80+ /* this goes last, obviously */
81+ IORING_OP_LAST,
82+};
6683
6784 /*
6885 * sqe->fsync_flags
6986 */
7087 #define IORING_FSYNC_DATASYNC (1U << 0)
7188
89+/*
90+ * sqe->timeout_flags
91+ */
92+#define IORING_TIMEOUT_ABS (1U << 0)
93+
7294 /*
7395 * IO completion data structure (Completion Queue Entry)
7496 */
@@ -140,6 +162,8 @@ struct io_uring_params { · 65 unmodified lines
140162 * io_uring_params->features flags
141163 */
142164 #define IORING_FEAT_SINGLE_MMAP (1U << 0)
165+#define IORING_FEAT_NODROP (1U << 1)
166+#define IORING_FEAT_SUBMIT_STABLE (1U << 2)
143167
144168 /*
145169 * io_uring_register(2) opcodes and arguments
@@ -150,5 +174,11 @@ struct io_uring_params { · 4 unmodified lines
150174 #define IORING_UNREGISTER_FILES 3
151175 #define IORING_REGISTER_EVENTFD 4
152176 #define IORING_UNREGISTER_EVENTFD 5
177+#define IORING_REGISTER_FILES_UPDATE 6
178+
179+struct io_uring_files_update {
180+ __u32 offset;
181+ __s32 *fds;
182+};
153183
154184 #endif
include/uapi/linux/iommu.h+169−0
@@ -152,4 +152,173 @@ struct iommu_page_response { · 151 unmodified lines
152152 __u32 code;
153153 };
154154
155+/* defines the granularity of the invalidation */
156+enum iommu_inv_granularity {
157+ IOMMU_INV_GRANU_DOMAIN, /* domain-selective invalidation */
158+ IOMMU_INV_GRANU_PASID, /* PASID-selective invalidation */
159+ IOMMU_INV_GRANU_ADDR, /* page-selective invalidation */
160+ IOMMU_INV_GRANU_NR, /* number of invalidation granularities */
161+};
162+
163+/**
164+ * struct iommu_inv_addr_info - Address Selective Invalidation Structure
165+ *
166+ * @flags: indicates the granularity of the address-selective invalidation
167+ * - If the PASID bit is set, the @pasid field is populated and the invalidation
168+ * relates to cache entries tagged with this PASID and matching the address
169+ * range.
170+ * - If ARCHID bit is set, @archid is populated and the invalidation relates
171+ * to cache entries tagged with this architecture specific ID and matching
172+ * the address range.
173+ * - Both PASID and ARCHID can be set as they may tag different caches.
174+ * - If neither PASID or ARCHID is set, global addr invalidation applies.
175+ * - The LEAF flag indicates whether only the leaf PTE caching needs to be
176+ * invalidated and other paging structure caches can be preserved.
177+ * @pasid: process address space ID
178+ * @archid: architecture-specific ID
179+ * @addr: first stage/level input address
180+ * @granule_size: page/block size of the mapping in bytes
181+ * @nb_granules: number of contiguous granules to be invalidated
182+ */
183+struct iommu_inv_addr_info {
184+#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
185+#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
186+#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
187+ __u32 flags;
188+ __u32 archid;
189+ __u64 pasid;
190+ __u64 addr;
191+ __u64 granule_size;
192+ __u64 nb_granules;
193+};
194+
195+/**
196+ * struct iommu_inv_pasid_info - PASID Selective Invalidation Structure
197+ *
198+ * @flags: indicates the granularity of the PASID-selective invalidation
199+ * - If the PASID bit is set, the @pasid field is populated and the invalidation
200+ * relates to cache entries tagged with this PASID and matching the address
201+ * range.
202+ * - If the ARCHID bit is set, the @archid is populated and the invalidation
203+ * relates to cache entries tagged with this architecture specific ID and
204+ * matching the address range.
205+ * - Both PASID and ARCHID can be set as they may tag different caches.
206+ * - At least one of PASID or ARCHID must be set.
207+ * @pasid: process address space ID
208+ * @archid: architecture-specific ID
209+ */
210+struct iommu_inv_pasid_info {
211+#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
212+#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
213+ __u32 flags;
214+ __u32 archid;
215+ __u64 pasid;
216+};
217+
218+/**
219+ * struct iommu_cache_invalidate_info - First level/stage invalidation
220+ * information
221+ * @version: API version of this structure
222+ * @cache: bitfield that allows to select which caches to invalidate
223+ * @granularity: defines the lowest granularity used for the invalidation:
224+ * domain > PASID > addr
225+ * @padding: reserved for future use (should be zero)
226+ * @pasid_info: invalidation data when @granularity is %IOMMU_INV_GRANU_PASID
227+ * @addr_info: invalidation data when @granularity is %IOMMU_INV_GRANU_ADDR
228+ *
229+ * Not all the combinations of cache/granularity are valid:
230+ *
231+ * +--------------+---------------+---------------+---------------+
232+ * | type / | DEV_IOTLB | IOTLB | PASID |
233+ * | granularity | | | cache |
234+ * +==============+===============+===============+===============+
235+ * | DOMAIN | N/A | Y | Y |
236+ * +--------------+---------------+---------------+---------------+
237+ * | PASID | Y | Y | Y |
238+ * +--------------+---------------+---------------+---------------+
239+ * | ADDR | Y | Y | N/A |
240+ * +--------------+---------------+---------------+---------------+
241+ *
242+ * Invalidations by %IOMMU_INV_GRANU_DOMAIN don't take any argument other than
243+ * @version and @cache.
244+ *
245+ * If multiple cache types are invalidated simultaneously, they all
246+ * must support the used granularity.
247+ */
248+struct iommu_cache_invalidate_info {
249+#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
250+ __u32 version;
251+/* IOMMU paging structure cache */
252+#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0) /* IOMMU IOTLB */
253+#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1) /* Device IOTLB */
254+#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2) /* PASID cache */
255+#define IOMMU_CACHE_INV_TYPE_NR (3)
256+ __u8 cache;
257+ __u8 granularity;
258+ __u8 padding[2];
259+ union {
260+ struct iommu_inv_pasid_info pasid_info;
261+ struct iommu_inv_addr_info addr_info;
262+ };
263+};
264+
265+/**
266+ * struct iommu_gpasid_bind_data_vtd - Intel VT-d specific data on device and guest
267+ * SVA binding.
268+ *
269+ * @flags: VT-d PASID table entry attributes
270+ * @pat: Page attribute table data to compute effective memory type
271+ * @emt: Extended memory type
272+ *
273+ * Only guest vIOMMU selectable and effective options are passed down to
274+ * the host IOMMU.
275+ */
276+struct iommu_gpasid_bind_data_vtd {
277+#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0) /* supervisor request */
278+#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1) /* extended access enable */
279+#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2) /* page-level cache disable */
280+#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3) /* page-level write through */
281+#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4) /* extended mem type enable */
282+#define IOMMU_SVA_VTD_GPASID_CD (1 << 5) /* PASID-level cache disable */
283+ __u64 flags;
284+ __u32 pat;
285+ __u32 emt;
286+};
287+
288+/**
289+ * struct iommu_gpasid_bind_data - Information about device and guest PASID binding
290+ * @version: Version of this data structure
291+ * @format: PASID table entry format
292+ * @flags: Additional information on guest bind request
293+ * @gpgd: Guest page directory base of the guest mm to bind
294+ * @hpasid: Process address space ID used for the guest mm in host IOMMU
295+ * @gpasid: Process address space ID used for the guest mm in guest IOMMU
296+ * @addr_width: Guest virtual address width
297+ * @padding: Reserved for future use (should be zero)
298+ * @vtd: Intel VT-d specific data
299+ *
300+ * Guest to host PASID mapping can be an identity or non-identity, where guest
301+ * has its own PASID space. For non-identify mapping, guest to host PASID lookup
302+ * is needed when VM programs guest PASID into an assigned device. VMM may
303+ * trap such PASID programming then request host IOMMU driver to convert guest
304+ * PASID to host PASID based on this bind data.
305+ */
306+struct iommu_gpasid_bind_data {
307+#define IOMMU_GPASID_BIND_VERSION_1 1
308+ __u32 version;
309+#define IOMMU_PASID_FORMAT_INTEL_VTD 1
310+ __u32 format;
311+#define IOMMU_SVA_GPASID_VAL (1 << 0) /* guest PASID valid */
312+ __u64 flags;
313+ __u64 gpgd;
314+ __u64 hpasid;
315+ __u64 gpasid;
316+ __u32 addr_width;
317+ __u8 padding[12];
318+ /* Vendor specific data */
319+ union {
320+ struct iommu_gpasid_bind_data_vtd vtd;
321+ };
322+};
323+
155324 #endif /* _UAPI_IOMMU_H */
include/uapi/linux/kcov.h+28−0
@@ -4,9 +4,24 @@ · 3 unmodified lines
44
55 #include <linux/types.h>
66
7+/*
8+ * Argument for KCOV_REMOTE_ENABLE ioctl, see Documentation/dev-tools/kcov.rst
9+ * and the comment before kcov_remote_start() for usage details.
10+ */
11+struct kcov_remote_arg {
12+ __u32 trace_mode; /* KCOV_TRACE_PC or KCOV_TRACE_CMP */
13+ __u32 area_size; /* Length of coverage buffer in words */
14+ __u32 num_handles; /* Size of handles array */
15+ __aligned_u64 common_handle;
16+ __aligned_u64 handles[0];
17+};
18+
19+#define KCOV_REMOTE_MAX_HANDLES 0x100
20+
721 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
822 #define KCOV_ENABLE _IO('c', 100)
923 #define KCOV_DISABLE _IO('c', 101)
24+#define KCOV_REMOTE_ENABLE _IOW('c', 102, struct kcov_remote_arg)
1025
1126 enum {
1227 /*
@@ -32,4 +47,17 @@ enum { · 19 unmodified lines
3247 #define KCOV_CMP_SIZE(n) ((n) << 1)
3348 #define KCOV_CMP_MASK KCOV_CMP_SIZE(3)
3449
50+#define KCOV_SUBSYSTEM_COMMON (0x00ull << 56)
51+#define KCOV_SUBSYSTEM_USB (0x01ull << 56)
52+
53+#define KCOV_SUBSYSTEM_MASK (0xffull << 56)
54+#define KCOV_INSTANCE_MASK (0xffffffffull)
55+
56+static inline __u64 kcov_remote_handle(__u64 subsys, __u64 inst)
57+{
58+ if (subsys & ~KCOV_SUBSYSTEM_MASK || inst & ~KCOV_INSTANCE_MASK)
59+ return 0;
60+ return subsys | inst;
61+}
62+
3563 #endif /* _LINUX_KCOV_IOCTLS_H */
include/uapi/linux/kvm.h+12−0
@@ -235,6 +235,7 @@ struct kvm_hyperv_exit { · 234 unmodified lines
235235 #define KVM_EXIT_S390_STSI 25
236236 #define KVM_EXIT_IOAPIC_EOI 26
237237 #define KVM_EXIT_HYPERV 27
238+#define KVM_EXIT_ARM_NISV 28
238239
239240 /* For KVM_EXIT_INTERNAL_ERROR */
240241 /* Emulate instruction failed. */
@@ -394,6 +395,11 @@ struct kvm_run { · 153 unmodified lines
394395 } eoi;
395396 /* KVM_EXIT_HYPERV */
396397 struct kvm_hyperv_exit hyperv;
398+ /* KVM_EXIT_ARM_NISV */
399+ struct {
400+ __u64 esr_iss;
401+ __u64 fault_ipa;
402+ } arm_nisv;
397403 /* Fix the size of the union. */
398404 char padding[256];
399405 };
@@ -1000,6 +1006,9 @@ struct kvm_ppc_resize_hpt { · 600 unmodified lines
10001006 #define KVM_CAP_PMU_EVENT_FILTER 173
10011007 #define KVM_CAP_ARM_IRQ_LINE_LAYOUT_2 174
10021008 #define KVM_CAP_HYPERV_DIRECT_TLBFLUSH 175
1009+#define KVM_CAP_PPC_GUEST_DEBUG_SSTEP 176
1010+#define KVM_CAP_ARM_NISV_TO_USER 177
1011+#define KVM_CAP_ARM_INJECT_EXT_DABT 178
10031012
10041013 #ifdef KVM_CAP_IRQ_ROUTING
10051014
@@ -1227,6 +1236,8 @@ enum kvm_device_type { · 221 unmodified lines
12271236 #define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS
12281237 KVM_DEV_TYPE_XIVE,
12291238 #define KVM_DEV_TYPE_XIVE KVM_DEV_TYPE_XIVE
1239+ KVM_DEV_TYPE_ARM_PV_TIME,
1240+#define KVM_DEV_TYPE_ARM_PV_TIME KVM_DEV_TYPE_ARM_PV_TIME
12301241 KVM_DEV_TYPE_MAX,
12311242 };
12321243
@@ -1337,6 +1348,7 @@ struct kvm_s390_ucas_mapping { · 104 unmodified lines
13371348 #define KVM_PPC_GET_CPU_CHAR _IOR(KVMIO, 0xb1, struct kvm_ppc_cpu_char)
13381349 /* Available with KVM_CAP_PMU_EVENT_FILTER */
13391350 #define KVM_SET_PMU_EVENT_FILTER _IOW(KVMIO, 0xb2, struct kvm_pmu_event_filter)
1351+#define KVM_PPC_SVM_OFF _IO(KVMIO, 0xb3)
13401352
13411353 /* ioctl for vm fd */
13421354 #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)
include/uapi/linux/lwtunnel.h+41−0
@@ -27,6 +27,7 @@ enum lwtunnel_ip_t { · 26 unmodified lines
2727 LWTUNNEL_IP_TOS,
2828 LWTUNNEL_IP_FLAGS,
2929 LWTUNNEL_IP_PAD,
30+ LWTUNNEL_IP_OPTS,
3031 __LWTUNNEL_IP_MAX,
3132 };
3233
@@ -41,11 +42,51 @@ enum lwtunnel_ip6_t { · 8 unmodified lines
4142 LWTUNNEL_IP6_TC,
4243 LWTUNNEL_IP6_FLAGS,
4344 LWTUNNEL_IP6_PAD,
45+ LWTUNNEL_IP6_OPTS,
4446 __LWTUNNEL_IP6_MAX,
4547 };
4648
4749 #define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
4850
51+enum {
52+ LWTUNNEL_IP_OPTS_UNSPEC,
53+ LWTUNNEL_IP_OPTS_GENEVE,
54+ LWTUNNEL_IP_OPTS_VXLAN,
55+ LWTUNNEL_IP_OPTS_ERSPAN,
56+ __LWTUNNEL_IP_OPTS_MAX,
57+};
58+
59+#define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1)
60+
61+enum {
62+ LWTUNNEL_IP_OPT_GENEVE_UNSPEC,
63+ LWTUNNEL_IP_OPT_GENEVE_CLASS,
64+ LWTUNNEL_IP_OPT_GENEVE_TYPE,
65+ LWTUNNEL_IP_OPT_GENEVE_DATA,
66+ __LWTUNNEL_IP_OPT_GENEVE_MAX,
67+};
68+
69+#define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1)
70+
71+enum {
72+ LWTUNNEL_IP_OPT_VXLAN_UNSPEC,
73+ LWTUNNEL_IP_OPT_VXLAN_GBP,
74+ __LWTUNNEL_IP_OPT_VXLAN_MAX,
75+};
76+
77+#define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1)
78+
79+enum {
80+ LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,
81+ LWTUNNEL_IP_OPT_ERSPAN_VER,
82+ LWTUNNEL_IP_OPT_ERSPAN_INDEX,
83+ LWTUNNEL_IP_OPT_ERSPAN_DIR,
84+ LWTUNNEL_IP_OPT_ERSPAN_HWID,
85+ __LWTUNNEL_IP_OPT_ERSPAN_MAX,
86+};
87+
88+#define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1)
89+
4990 enum {
5091 LWT_BPF_PROG_UNSPEC,
5192 LWT_BPF_PROG_FD,
include/uapi/linux/magic.h+1−0
@@ -94,5 +94,6 @@ · 93 unmodified lines
9494 #define ZSMALLOC_MAGIC 0x58295829
9595 #define DMA_BUF_MAGIC 0x444d4142 /* "DMAB" */
9696 #define Z3FOLD_MAGIC 0x33
97+#define PPC_CMM_MAGIC 0xc7571590
9798
9899 #endif /* __LINUX_MAGIC_H__ */
include/uapi/linux/msg.h+3−3
@@ -19,9 +19,9 @@ struct msqid_ds { · 18 unmodified lines
1919 struct ipc_perm msg_perm;
2020 struct msg *msg_first; /* first message on queue,unused */
2121 struct msg *msg_last; /* last message in queue,unused */
22− __kernel_time_t msg_stime; /* last msgsnd time */
23− __kernel_time_t msg_rtime; /* last msgrcv time */
24− __kernel_time_t msg_ctime; /* last change time */
22+ __kernel_old_time_t msg_stime; /* last msgsnd time */
23+ __kernel_old_time_t msg_rtime; /* last msgrcv time */
24+ __kernel_old_time_t msg_ctime; /* last change time */
2525 unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */
2626 unsigned long msg_lqbytes; /* ditto */
2727 unsigned short msg_cbytes; /* current number of bytes on queue */
include/uapi/linux/netfilter/ipset/ip_set.h+2−0
@@ -205,6 +205,8 @@ enum ipset_cadt_flags { · 204 unmodified lines
205205 IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
206206 IPSET_FLAG_BIT_WITH_SKBINFO = 6,
207207 IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO),
208+ IPSET_FLAG_BIT_IFACE_WILDCARD = 7,
209+ IPSET_FLAG_IFACE_WILDCARD = (1 << IPSET_FLAG_BIT_IFACE_WILDCARD),
208210 IPSET_FLAG_CADT_MAX = 15,
209211 };
210212
include/uapi/linux/netfilter/nf_tables.h+4−0
@@ -144,12 +144,14 @@ enum nft_list_attributes { · 143 unmodified lines
144144 * @NFTA_HOOK_HOOKNUM: netfilter hook number (NLA_U32)
145145 * @NFTA_HOOK_PRIORITY: netfilter hook priority (NLA_U32)
146146 * @NFTA_HOOK_DEV: netdevice name (NLA_STRING)
147+ * @NFTA_HOOK_DEVS: list of netdevices (NLA_NESTED)
147148 */
148149 enum nft_hook_attributes {
149150 NFTA_HOOK_UNSPEC,
150151 NFTA_HOOK_HOOKNUM,
151152 NFTA_HOOK_PRIORITY,
152153 NFTA_HOOK_DEV,
154+ NFTA_HOOK_DEVS,
153155 __NFTA_HOOK_MAX
154156 };
155157 #define NFTA_HOOK_MAX (__NFTA_HOOK_MAX - 1)
@@ -1516,6 +1518,7 @@ enum nft_object_attributes { · 1360 unmodified lines
15161518 * @NFTA_FLOWTABLE_HOOK: netfilter hook configuration(NLA_U32)
15171519 * @NFTA_FLOWTABLE_USE: number of references to this flow table (NLA_U32)
15181520 * @NFTA_FLOWTABLE_HANDLE: object handle (NLA_U64)
1521+ * @NFTA_FLOWTABLE_FLAGS: flags (NLA_U32)
15191522 */
15201523 enum nft_flowtable_attributes {
15211524 NFTA_FLOWTABLE_UNSPEC,
@@ -1525,6 +1528,7 @@ enum nft_flowtable_attributes { · 3 unmodified lines
15251528 NFTA_FLOWTABLE_USE,
15261529 NFTA_FLOWTABLE_HANDLE,
15271530 NFTA_FLOWTABLE_PAD,
1531+ NFTA_FLOWTABLE_FLAGS,
15281532 __NFTA_FLOWTABLE_MAX
15291533 };
15301534 #define NFTA_FLOWTABLE_MAX (__NFTA_FLOWTABLE_MAX - 1)
include/uapi/linux/netfilter/xt_sctp.h+3−3
@@ -41,19 +41,19 @@ struct xt_sctp_info { · 40 unmodified lines
4141 #define SCTP_CHUNKMAP_SET(chunkmap, type) \
4242 do { \
4343 (chunkmap)[type / bytes(__u32)] |= \
44− 1 << (type % bytes(__u32)); \
44+ 1u << (type % bytes(__u32)); \
4545 } while (0)
4646
4747 #define SCTP_CHUNKMAP_CLEAR(chunkmap, type) \
4848 do { \
4949 (chunkmap)[type / bytes(__u32)] &= \
50− ~(1 << (type % bytes(__u32))); \
50+ ~(1u << (type % bytes(__u32))); \
5151 } while (0)
5252
5353 #define SCTP_CHUNKMAP_IS_SET(chunkmap, type) \
5454 ({ \
5555 ((chunkmap)[type / bytes (__u32)] & \
56− (1 << (type % bytes (__u32)))) ? 1: 0; \
56+ (1u << (type % bytes (__u32)))) ? 1: 0; \
5757 })
5858
5959 #define SCTP_CHUNKMAP_RESET(chunkmap) \
include/uapi/linux/netfilter_arp/arp_tables.h+1−1
@@ -199,7 +199,7 @@ struct arpt_get_entries { · 198 unmodified lines
199199 /* Helper functions */
200200 static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e)
201201 {
202− return (void *)e + e->target_offset;
202+ return (struct xt_entry_target *)((char *)e + e->target_offset);
203203 }
204204
205205 /*
include/uapi/linux/netfilter_bridge/ebtables.h+1−1
@@ -194,7 +194,7 @@ struct ebt_entry { · 193 unmodified lines
194194 static __inline__ struct ebt_entry_target *
195195 ebt_get_target(struct ebt_entry *e)
196196 {
197− return (void *)e + e->target_offset;
197+ return (struct ebt_entry_target *)((char *)e + e->target_offset);
198198 }
199199
200200 /* {g,s}etsockopt numbers */
include/uapi/linux/netfilter_ipv4/ip_tables.h+1−1
@@ -222,7 +222,7 @@ struct ipt_get_entries { · 221 unmodified lines
222222 static __inline__ struct xt_entry_target *
223223 ipt_get_target(struct ipt_entry *e)
224224 {
225− return (void *)e + e->target_offset;
225+ return (struct xt_entry_target *)((char *)e + e->target_offset);
226226 }
227227
228228 /*
include/uapi/linux/netfilter_ipv6/ip6_tables.h+1−1
@@ -262,7 +262,7 @@ struct ip6t_get_entries { · 261 unmodified lines
262262 static __inline__ struct xt_entry_target *
263263 ip6t_get_target(struct ip6t_entry *e)
264264 {
265− return (void *)e + e->target_offset;
265+ return (struct xt_entry_target *)((char *)e + e->target_offset);
266266 }
267267
268268 /*
include/uapi/linux/nl80211.h+39−0
@@ -248,6 +248,22 @@ · 247 unmodified lines
248248 * %NL80211_ATTR_SAE_PASSWORD.
249249 */
250250
251+/**
252+ * DOC: VLAN offload support for setting group keys and binding STAs to VLANs
253+ *
254+ * By setting @NL80211_EXT_FEATURE_VLAN_OFFLOAD flag drivers can indicate they
255+ * support offloading VLAN functionality in a manner where the driver exposes a
256+ * single netdev that uses VLAN tagged frames and separate VLAN-specific netdevs
257+ * can then be added using RTM_NEWLINK/IFLA_VLAN_ID similarly to the Ethernet
258+ * case. Frames received from stations that are not assigned to any VLAN are
259+ * delivered on the main netdev and frames to such stations can be sent through
260+ * that main netdev.
261+ *
262+ * %NL80211_CMD_NEW_KEY (for group keys), %NL80211_CMD_NEW_STATION, and
263+ * %NL80211_CMD_SET_STATION will optionally specify vlan_id using
264+ * %NL80211_ATTR_VLAN_ID.
265+ */
266+
251267 /**
252268 * enum nl80211_commands - supported nl80211 commands
253269 *
@@ -571,6 +587,14 @@ · 317 unmodified lines
571587 * set of BSSID,frequency parameters is used (i.e., either the enforcing
572588 * %NL80211_ATTR_MAC,%NL80211_ATTR_WIPHY_FREQ or the less strict
573589 * %NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT).
590+ * Driver shall not modify the IEs specified through %NL80211_ATTR_IE if
591+ * %NL80211_ATTR_MAC is included. However, if %NL80211_ATTR_MAC_HINT is
592+ * included, these IEs through %NL80211_ATTR_IE are specified by the user
593+ * space based on the best possible BSS selected. Thus, if the driver ends
594+ * up selecting a different BSS, it can modify these IEs accordingly (e.g.
595+ * userspace asks the driver to perform PMKSA caching with BSS1 and the
596+ * driver ends up selecting BSS2 with different PMKSA cache entry; RSNIE
597+ * has to get updated with the apt PMKID).
574598 * %NL80211_ATTR_PREV_BSSID can be used to request a reassociation within
575599 * the ESS in case the device is already associated and an association with
576600 * a different BSS is desired.
@@ -2373,6 +2397,9 @@ enum nl80211_commands { · 1796 unmodified lines
23732397 * the allowed channel bandwidth configurations. (u8 attribute)
23742398 * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
23752399 *
2400+ * @NL80211_ATTR_VLAN_ID: VLAN ID (1..4094) for the station and VLAN group key
2401+ * (u16).
2402+ *
23762403 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
23772404 * @NL80211_ATTR_MAX: highest attribute number currently defined
23782405 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2835,6 +2862,8 @@ enum nl80211_attrs { · 456 unmodified lines
28352862 NL80211_ATTR_WIPHY_EDMG_CHANNELS,
28362863 NL80211_ATTR_WIPHY_EDMG_BW_CONFIG,
28372864
2865+ NL80211_ATTR_VLAN_ID,
2866+
28382867 /* add attributes here, update the policy in nl80211.c */
28392868
28402869 __NL80211_ATTR_AFTER_LAST,
@@ -5484,6 +5513,14 @@ enum nl80211_feature_flags { · 2643 unmodified lines
54845513 * @NL80211_EXT_FEATURE_SAE_OFFLOAD: Device wants to do SAE authentication in
54855514 * station mode (SAE password is passed as part of the connect command).
54865515 *
5516+ * @NL80211_EXT_FEATURE_VLAN_OFFLOAD: The driver supports a single netdev
5517+ * with VLAN tagged frames and separate VLAN-specific netdevs added using
5518+ * vconfig similarly to the Ethernet case.
5519+ *
5520+ * @NL80211_EXT_FEATURE_AQL: The driver supports the Airtime Queue Limit (AQL)
5521+ * feature, which prevents bufferbloat by using the expected transmission
5522+ * time to limit the amount of data buffered in the hardware.
5523+ *
54875524 * @NUM_NL80211_EXT_FEATURES: number of extended features.
54885525 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
54895526 */
@@ -5529,6 +5566,8 @@ enum nl80211_ext_feature_index { · 39 unmodified lines
55295566 NL80211_EXT_FEATURE_EXT_KEY_ID,
55305567 NL80211_EXT_FEATURE_STA_TX_PWR,
55315568 NL80211_EXT_FEATURE_SAE_OFFLOAD,
5569+ NL80211_EXT_FEATURE_VLAN_OFFLOAD,
5570+ NL80211_EXT_FEATURE_AQL,
55325571
55335572 /* add new features before the definition below */
55345573 NUM_NL80211_EXT_FEATURES,
include/uapi/linux/nvme_ioctl.h+1−0
@@ -63,6 +63,7 @@ struct nvme_passthru_cmd64 { · 62 unmodified lines
6363 __u32 cdw14;
6464 __u32 cdw15;
6565 __u32 timeout_ms;
66+ __u32 rsvd2;
6667 __u64 result;
6768 };
6869
include/uapi/linux/openvswitch.h+3−1
@@ -173,6 +173,7 @@ enum ovs_packet_cmd { · 172 unmodified lines
173173 * @OVS_PACKET_ATTR_LEN: Packet size before truncation.
174174 * %OVS_PACKET_ATTR_USERSPACE action specify the Maximum received fragment
175175 * size.
176+ * @OVS_PACKET_ATTR_HASH: Packet hash info (e.g. hash, sw_hash and l4_hash in skb).
176177 *
177178 * These attributes follow the &struct ovs_header within the Generic Netlink
178179 * payload for %OVS_PACKET_* commands.
@@ -190,7 +191,8 @@ enum ovs_packet_attr { · 11 unmodified lines
190191 OVS_PACKET_ATTR_PROBE, /* Packet operation is a feature probe,
191192 error logging should be suppressed. */
192193 OVS_PACKET_ATTR_MRU, /* Maximum received IP fragment size. */
193− OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */
194+ OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */
195+ OVS_PACKET_ATTR_HASH, /* Packet hash. */
194196 __OVS_PACKET_ATTR_MAX
195197 };
196198
include/uapi/linux/pci_regs.h+3−0
@@ -34,6 +34,7 @@ · 33 unmodified lines
3434 * of which the first 64 bytes are standardized as follows:
3535 */
3636 #define PCI_STD_HEADER_SIZEOF 64
37+#define PCI_STD_NUM_BARS 6 /* Number of standard BARs */
3738 #define PCI_VENDOR_ID 0x00 /* 16 bits */
3839 #define PCI_DEVICE_ID 0x02 /* 16 bits */
3940 #define PCI_COMMAND 0x04 /* 16 bits */
@@ -673,6 +674,8 @@ · 633 unmodified lines
673674 #define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003 /* Supported Speed 8GT/s */
674675 #define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004 /* Supported Speed 16GT/s */
675676 #define PCI_EXP_LNKCTL2_TLS_32_0GT 0x0005 /* Supported Speed 32GT/s */
677+#define PCI_EXP_LNKCTL2_ENTER_COMP 0x0010 /* Enter Compliance */
678+#define PCI_EXP_LNKCTL2_TX_MARGIN 0x0380 /* Transmit Margin */
676679 #define PCI_EXP_LNKSTA2 50 /* Link Status 2 */
677680 #define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52 /* v2 endpoints with link end here */
678681 #define PCI_EXP_SLTCAP2 52 /* Slot Capabilities 2 */
include/uapi/linux/perf_event.h+8−2
@@ -141,8 +141,9 @@ enum perf_event_sample_format { · 140 unmodified lines
141141 PERF_SAMPLE_TRANSACTION = 1U << 17,
142142 PERF_SAMPLE_REGS_INTR = 1U << 18,
143143 PERF_SAMPLE_PHYS_ADDR = 1U << 19,
144+ PERF_SAMPLE_AUX = 1U << 20,
144145
145− PERF_SAMPLE_MAX = 1U << 20, /* non-ABI */
146+ PERF_SAMPLE_MAX = 1U << 21, /* non-ABI */
146147
147148 __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63, /* non-ABI; internal use */
148149 };
@@ -300,6 +301,7 @@ enum perf_event_read_format { · 151 unmodified lines
300301 /* add: sample_stack_user */
301302 #define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */
302303 #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */
304+#define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */
303305
304306 /*
305307 * Hardware event_id to monitor via a performance monitoring event:
@@ -424,7 +426,9 @@ struct perf_event_attr { · 118 unmodified lines
424426 */
425427 __u32 aux_watermark;
426428 __u16 sample_max_stack;
427− __u16 __reserved_2; /* align to __u64 */
429+ __u16 __reserved_2;
430+ __u32 aux_sample_size;
431+ __u32 __reserved_3;
428432 };
429433
430434 /*
@@ -864,6 +868,8 @@ enum perf_event_type { · 433 unmodified lines
864868 * { u64 abi; # enum perf_sample_regs_abi
865869 * u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_INTR
866870 * { u64 phys_addr;} && PERF_SAMPLE_PHYS_ADDR
871+ * { u64 size;
872+ * char data[size]; } && PERF_SAMPLE_AUX
867873 * };
868874 */
869875 PERF_RECORD_SAMPLE = 9,
include/uapi/linux/pkt_cls.h+34−0
@@ -16,9 +16,14 @@ enum { · 15 unmodified lines
1616 TCA_ACT_STATS,
1717 TCA_ACT_PAD,
1818 TCA_ACT_COOKIE,
19+ TCA_ACT_FLAGS,
1920 __TCA_ACT_MAX
2021 };
2122
23+#define TCA_ACT_FLAGS_NO_PERCPU_STATS 1 /* Don't use percpu allocator for
24+ * actions stats.
25+ */
26+
2227 #define TCA_ACT_MAX __TCA_ACT_MAX
2328 #define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
2429 #define TCA_ACT_MAX_PRIO 32
@@ -566,6 +571,14 @@ enum { · 541 unmodified lines
566571 * TCA_FLOWER_KEY_ENC_OPT_GENEVE_
567572 * attributes
568573 */
574+ TCA_FLOWER_KEY_ENC_OPTS_VXLAN, /* Nested
575+ * TCA_FLOWER_KEY_ENC_OPT_VXLAN_
576+ * attributes
577+ */
578+ TCA_FLOWER_KEY_ENC_OPTS_ERSPAN, /* Nested
579+ * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_
580+ * attributes
581+ */
569582 __TCA_FLOWER_KEY_ENC_OPTS_MAX,
570583 };
571584
@@ -583,6 +596,27 @@ enum { · 11 unmodified lines
583596 #define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX \
584597 (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
585598
599+enum {
600+ TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC,
601+ TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP, /* u32 */
602+ __TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX,
603+};
604+
605+#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX \
606+ (__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1)
607+
608+enum {
609+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,
610+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER, /* u8 */
611+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX, /* be32 */
612+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR, /* u8 */
613+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID, /* u8 */
614+ __TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,
615+};
616+
617+#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \
618+ (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
619+
586620 enum {
587621 TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
588622 TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
include/uapi/linux/pkt_sched.h+14−8
@@ -950,19 +950,25 @@ enum { · 949 unmodified lines
950950 TCA_PIE_BETA,
951951 TCA_PIE_ECN,
952952 TCA_PIE_BYTEMODE,
953+ TCA_PIE_DQ_RATE_ESTIMATOR,
953954 __TCA_PIE_MAX
954955 };
955956 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
956957
957958 struct tc_pie_xstats {
958− __u64 prob; /* current probability */
959− __u32 delay; /* current delay in ms */
960− __u32 avg_dq_rate; /* current average dq_rate in bits/pie_time */
961− __u32 packets_in; /* total number of packets enqueued */
962− __u32 dropped; /* packets dropped due to pie_action */
963− __u32 overlimit; /* dropped due to lack of space in queue */
964− __u32 maxq; /* maximum queue size */
965− __u32 ecn_mark; /* packets marked with ecn*/
959+ __u64 prob; /* current probability */
960+ __u32 delay; /* current delay in ms */
961+ __u32 avg_dq_rate; /* current average dq_rate in
962+ * bits/pie_time
963+ */
964+ __u32 dq_rate_estimating; /* is avg_dq_rate being calculated? */
965+ __u32 packets_in; /* total number of packets enqueued */
966+ __u32 dropped; /* packets dropped due to pie_action */
967+ __u32 overlimit; /* dropped due to lack of space
968+ * in queue
969+ */
970+ __u32 maxq; /* maximum queue size */
971+ __u32 ecn_mark; /* packets marked with ecn*/
966972 };
967973
968974 /* CBS */
include/uapi/linux/ppp-ioctl.h+2−0
@@ -104,6 +104,8 @@ struct pppol2tp_ioc_stats { · 103 unmodified lines
104104 #define PPPIOCGDEBUG _IOR('t', 65, int) /* Read debug level */
105105 #define PPPIOCSDEBUG _IOW('t', 64, int) /* Set debug level */
106106 #define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle) /* get idle time */
107+#define PPPIOCGIDLE32 _IOR('t', 63, struct ppp_idle32) /* 32-bit times */
108+#define PPPIOCGIDLE64 _IOR('t', 63, struct ppp_idle64) /* 64-bit times */
107109 #define PPPIOCNEWUNIT _IOWR('t', 62, int) /* create new ppp unit */
108110 #define PPPIOCATTACH _IOW('t', 61, int) /* attach to ppp unit */
109111 #define PPPIOCDETACH _IOW('t', 60, int) /* obsolete, do not use */
include/uapi/linux/ppp_defs.h+16−2
@@ -142,10 +142,24 @@ struct ppp_comp_stats { · 141 unmodified lines
142142 /*
143143 * The following structure records the time in seconds since
144144 * the last NP packet was sent or received.
145+ *
146+ * Linux implements both 32-bit and 64-bit time_t versions
147+ * for compatibility with user space that defines ppp_idle
148+ * based on the libc time_t.
145149 */
146150 struct ppp_idle {
147− __kernel_time_t xmit_idle; /* time since last NP packet sent */
148− __kernel_time_t recv_idle; /* time since last NP packet received */
151+ __kernel_old_time_t xmit_idle; /* time since last NP packet sent */
152+ __kernel_old_time_t recv_idle; /* time since last NP packet received */
153+};
154+
155+struct ppp_idle32 {
156+ __s32 xmit_idle; /* time since last NP packet sent */
157+ __s32 recv_idle; /* time since last NP packet received */
158+};
159+
160+struct ppp_idle64 {
161+ __s64 xmit_idle; /* time since last NP packet sent */
162+ __s64 recv_idle; /* time since last NP packet received */
149163 };
150164
151165 #endif /* _UAPI_PPP_DEFS_H_ */
include/uapi/linux/psp-sev.h+3−0
@@ -58,6 +58,9 @@ typedef enum { · 57 unmodified lines
5858 SEV_RET_HWSEV_RET_PLATFORM,
5959 SEV_RET_HWSEV_RET_UNSAFE,
6060 SEV_RET_UNSUPPORTED,
61+ SEV_RET_INVALID_PARAM,
62+ SEV_RET_RESOURCE_LIMIT,
63+ SEV_RET_SECURE_DATA_INVALID,
6164 SEV_RET_MAX,
6265 } sev_ret_code;
6366
include/uapi/linux/ptp_clock.h+4−1
@@ -31,13 +31,16 @@ · 30 unmodified lines
3131 #define PTP_ENABLE_FEATURE (1<<0)
3232 #define PTP_RISING_EDGE (1<<1)
3333 #define PTP_FALLING_EDGE (1<<2)
34+#define PTP_STRICT_FLAGS (1<<3)
35+#define PTP_EXTTS_EDGES (PTP_RISING_EDGE | PTP_FALLING_EDGE)
3436
3537 /*
3638 * flag fields valid for the new PTP_EXTTS_REQUEST2 ioctl.
3739 */
3840 #define PTP_EXTTS_VALID_FLAGS (PTP_ENABLE_FEATURE | \
3941 PTP_RISING_EDGE | \
40− PTP_FALLING_EDGE)
42+ PTP_FALLING_EDGE | \
43+ PTP_STRICT_FLAGS)
4144
4245 /*
4346 * flag fields valid for the original PTP_EXTTS_REQUEST ioctl.
include/uapi/linux/resource.h+2−2
@@ -22,8 +22,8 @@ · 21 unmodified lines
2222 #define RUSAGE_THREAD 1 /* only the calling thread */
2323
2424 struct rusage {
25− struct timeval ru_utime; /* user time used */
26− struct timeval ru_stime; /* system time used */
25+ struct __kernel_old_timeval ru_utime; /* user time used */
26+ struct __kernel_old_timeval ru_stime; /* system time used */
2727 __kernel_long_t ru_maxrss; /* maximum resident set size */
2828 __kernel_long_t ru_ixrss; /* integral shared memory size */
2929 __kernel_long_t ru_idrss; /* integral unshared data size */
include/uapi/linux/rtnetlink.h+7−0
@@ -164,6 +164,13 @@ enum { · 163 unmodified lines
164164 RTM_GETNEXTHOP,
165165 #define RTM_GETNEXTHOP RTM_GETNEXTHOP
166166
167+ RTM_NEWLINKPROP = 108,
168+#define RTM_NEWLINKPROP RTM_NEWLINKPROP
169+ RTM_DELLINKPROP,
170+#define RTM_DELLINKPROP RTM_DELLINKPROP
171+ RTM_GETLINKPROP,
172+#define RTM_GETLINKPROP RTM_GETLINKPROP
173+
167174 __RTM_MAX,
168175 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
169176 };
include/uapi/linux/scc.h+1−0
@@ -4,6 +4,7 @@ · 3 unmodified lines
44 #ifndef _UAPI_SCC_H
55 #define _UAPI_SCC_H
66
7+#include <linux/sockios.h>
78
89 /* selection of hardware types */
910
include/uapi/linux/sched.h+42−18
@@ -33,27 +33,48 @@ · 32 unmodified lines
3333 #define CLONE_NEWNET 0x40000000 /* New network namespace */
3434 #define CLONE_IO 0x80000000 /* Clone io context */
3535
36+/* Flags for the clone3() syscall. */
37+#define CLONE_CLEAR_SIGHAND 0x100000000ULL /* Clear any signal handler and reset to SIG_DFL. */
38+
3639 #ifndef __ASSEMBLY__
3740 /**
3841 * struct clone_args - arguments for the clone3 syscall
39− * @flags: Flags for the new process as listed above.
40− * All flags are valid except for CSIGNAL and
41− * CLONE_DETACHED.
42− * @pidfd: If CLONE_PIDFD is set, a pidfd will be
43− * returned in this argument.
44− * @child_tid: If CLONE_CHILD_SETTID is set, the TID of the
45− * child process will be returned in the child's
46− * memory.
47− * @parent_tid: If CLONE_PARENT_SETTID is set, the TID of
48− * the child process will be returned in the
49− * parent's memory.
50− * @exit_signal: The exit_signal the parent process will be
51− * sent when the child exits.
52− * @stack: Specify the location of the stack for the
53− * child process.
54− * @stack_size: The size of the stack for the child process.
55− * @tls: If CLONE_SETTLS is set, the tls descriptor
56− * is set to tls.
42+ * @flags: Flags for the new process as listed above.
43+ * All flags are valid except for CSIGNAL and
44+ * CLONE_DETACHED.
45+ * @pidfd: If CLONE_PIDFD is set, a pidfd will be
46+ * returned in this argument.
47+ * @child_tid: If CLONE_CHILD_SETTID is set, the TID of the
48+ * child process will be returned in the child's
49+ * memory.
50+ * @parent_tid: If CLONE_PARENT_SETTID is set, the TID of
51+ * the child process will be returned in the
52+ * parent's memory.
53+ * @exit_signal: The exit_signal the parent process will be
54+ * sent when the child exits.
55+ * @stack: Specify the location of the stack for the
56+ * child process.
57+ * Note, @stack is expected to point to the
58+ * lowest address. The stack direction will be
59+ * determined by the kernel and set up
60+ * appropriately based on @stack_size.
61+ * @stack_size: The size of the stack for the child process.
62+ * @tls: If CLONE_SETTLS is set, the tls descriptor
63+ * is set to tls.
64+ * @set_tid: Pointer to an array of type *pid_t. The size
65+ * of the array is defined using @set_tid_size.
66+ * This array is used to select PIDs/TIDs for
67+ * newly created processes. The first element in
68+ * this defines the PID in the most nested PID
69+ * namespace. Each additional element in the array
70+ * defines the PID in the parent PID namespace of
71+ * the original PID namespace. If the array has
72+ * less entries than the number of currently
73+ * nested PID namespaces only the PIDs in the
74+ * corresponding namespaces are set.
75+ * @set_tid_size: This defines the size of the array referenced
76+ * in @set_tid. This cannot be larger than the
77+ * kernel's limit of nested PID namespaces.
5778 *
5879 * The structure is versioned by size and thus extensible.
5980 * New struct members must go at the end of the struct and
@@ -68,10 +89,13 @@ struct clone_args { · 8 unmodified lines
6889 __aligned_u64 stack;
6990 __aligned_u64 stack_size;
7091 __aligned_u64 tls;
92+ __aligned_u64 set_tid;
93+ __aligned_u64 set_tid_size;
7194 };
7295 #endif
7396
7497 #define CLONE_ARGS_SIZE_VER0 64 /* sizeof first published struct */
98+#define CLONE_ARGS_SIZE_VER1 80 /* sizeof second published struct */
7599
76100 /*
77101 * Scheduling policies
include/uapi/linux/sctp.h+30−1
@@ -105,6 +105,7 @@ typedef __s32 sctp_assoc_t; · 104 unmodified lines
105105 #define SCTP_DEFAULT_SNDINFO 34
106106 #define SCTP_AUTH_DEACTIVATE_KEY 35
107107 #define SCTP_REUSE_PORT 36
108+#define SCTP_PEER_ADDR_THLDS_V2 37
108109
109110 /* Internal Socket Options. Some of the sctp library functions are
110111 * implemented using these socket options.
@@ -137,6 +138,8 @@ typedef __s32 sctp_assoc_t; · 26 unmodified lines
137138 #define SCTP_ASCONF_SUPPORTED 128
138139 #define SCTP_AUTH_SUPPORTED 129
139140 #define SCTP_ECN_SUPPORTED 130
141+#define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131
142+#define SCTP_EXPOSE_PF_STATE SCTP_EXPOSE_POTENTIALLY_FAILED_STATE
140143
141144 /* PR-SCTP policies */
142145 #define SCTP_PR_SCTP_NONE 0x0000
@@ -410,6 +413,8 @@ enum sctp_spc_state { · 267 unmodified lines
410413 SCTP_ADDR_ADDED,
411414 SCTP_ADDR_MADE_PRIM,
412415 SCTP_ADDR_CONFIRMED,
416+ SCTP_ADDR_POTENTIALLY_FAILED,
417+#define SCTP_ADDR_PF SCTP_ADDR_POTENTIALLY_FAILED
413418 };
414419
415420
@@ -449,6 +454,16 @@ struct sctp_send_failed { · 33 unmodified lines
449454 __u8 ssf_data[0];
450455 };
451456
457+struct sctp_send_failed_event {
458+ __u16 ssf_type;
459+ __u16 ssf_flags;
460+ __u32 ssf_length;
461+ __u32 ssf_error;
462+ struct sctp_sndinfo ssfe_info;
463+ sctp_assoc_t ssf_assoc_id;
464+ __u8 ssf_data[0];
465+};
466+
452467 /*
453468 * ssf_flags: 16 bits (unsigned integer)
454469 *
@@ -605,6 +620,7 @@ struct sctp_event_subscribe { · 150 unmodified lines
605620 __u8 sctp_stream_reset_event;
606621 __u8 sctp_assoc_reset_event;
607622 __u8 sctp_stream_change_event;
623+ __u8 sctp_send_failure_event_event;
608624 };
609625
610626 /*
@@ -632,6 +648,7 @@ union sctp_notification { · 21 unmodified lines
632648 struct sctp_stream_reset_event sn_strreset_event;
633649 struct sctp_assoc_reset_event sn_assocreset_event;
634650 struct sctp_stream_change_event sn_strchange_event;
651+ struct sctp_send_failed_event sn_send_failed_event;
635652 };
636653
637654 /* Section 5.3.1
@@ -667,7 +684,9 @@ enum sctp_sn_type { · 29 unmodified lines
667684 #define SCTP_ASSOC_RESET_EVENT SCTP_ASSOC_RESET_EVENT
668685 SCTP_STREAM_CHANGE_EVENT,
669686 #define SCTP_STREAM_CHANGE_EVENT SCTP_STREAM_CHANGE_EVENT
670− SCTP_SN_TYPE_MAX = SCTP_STREAM_CHANGE_EVENT,
687+ SCTP_SEND_FAILED_EVENT,
688+#define SCTP_SEND_FAILED_EVENT SCTP_SEND_FAILED_EVENT
689+ SCTP_SN_TYPE_MAX = SCTP_SEND_FAILED_EVENT,
671690 #define SCTP_SN_TYPE_MAX SCTP_SN_TYPE_MAX
672691 };
673692
@@ -919,6 +938,7 @@ struct sctp_paddrinfo { · 245 unmodified lines
919938 enum sctp_spinfo_state {
920939 SCTP_INACTIVE,
921940 SCTP_PF,
941+#define SCTP_POTENTIALLY_FAILED SCTP_PF
922942 SCTP_ACTIVE,
923943 SCTP_UNCONFIRMED,
924944 SCTP_UNKNOWN = 0xffff /* Value used for transport state unknown */
@@ -1068,6 +1088,15 @@ struct sctp_paddrthlds { · 143 unmodified lines
10681088 __u16 spt_pathpfthld;
10691089 };
10701090
1091+/* Use a new structure with spt_pathcpthld for back compatibility */
1092+struct sctp_paddrthlds_v2 {
1093+ sctp_assoc_t spt_assoc_id;
1094+ struct sockaddr_storage spt_address;
1095+ __u16 spt_pathmaxrxt;
1096+ __u16 spt_pathpfthld;
1097+ __u16 spt_pathcpthld;
1098+};
1099+
10711100 /*
10721101 * Socket Option for Getting the Association/Stream-Specific PR-SCTP Status
10731102 */
include/uapi/linux/seccomp.h+29−0
@@ -76,6 +76,35 @@ struct seccomp_notif { · 75 unmodified lines
7676 struct seccomp_data data;
7777 };
7878
79+/*
80+ * Valid flags for struct seccomp_notif_resp
81+ *
82+ * Note, the SECCOMP_USER_NOTIF_FLAG_CONTINUE flag must be used with caution!
83+ * If set by the process supervising the syscalls of another process the
84+ * syscall will continue. This is problematic because of an inherent TOCTOU.
85+ * An attacker can exploit the time while the supervised process is waiting on
86+ * a response from the supervising process to rewrite syscall arguments which
87+ * are passed as pointers of the intercepted syscall.
88+ * It should be absolutely clear that this means that the seccomp notifier
89+ * _cannot_ be used to implement a security policy! It should only ever be used
90+ * in scenarios where a more privileged process supervises the syscalls of a
91+ * lesser privileged process to get around kernel-enforced security
92+ * restrictions when the privileged process deems this safe. In other words,
93+ * in order to continue a syscall the supervising process should be sure that
94+ * another security mechanism or the kernel itself will sufficiently block
95+ * syscalls if arguments are rewritten to something unsafe.
96+ *
97+ * Similar precautions should be applied when stacking SECCOMP_RET_USER_NOTIF
98+ * or SECCOMP_RET_TRACE. For SECCOMP_RET_USER_NOTIF filters acting on the
99+ * same syscall, the most recently added filter takes precedence. This means
100+ * that the new SECCOMP_RET_USER_NOTIF filter can override any
101+ * SECCOMP_IOCTL_NOTIF_SEND from earlier filters, essentially allowing all
102+ * such filtered syscalls to be executed by sending the response
103+ * SECCOMP_USER_NOTIF_FLAG_CONTINUE. Note that SECCOMP_RET_TRACE can equally
104+ * be overriden by SECCOMP_USER_NOTIF_FLAG_CONTINUE.
105+ */
106+#define SECCOMP_USER_NOTIF_FLAG_CONTINUE (1UL << 0)
107+
79108 struct seccomp_notif_resp {
80109 __u64 id;
81110 __s64 val;
include/uapi/linux/sed-opal.h+20−0
@@ -113,6 +113,25 @@ struct opal_shadow_mbr { · 112 unmodified lines
113113 __u64 size;
114114 };
115115
116+/* Opal table operations */
117+enum opal_table_ops {
118+ OPAL_READ_TABLE,
119+ OPAL_WRITE_TABLE,
120+};
121+
122+#define OPAL_UID_LENGTH 8
123+struct opal_read_write_table {
124+ struct opal_key key;
125+ const __u64 data;
126+ const __u8 table_uid[OPAL_UID_LENGTH];
127+ __u64 offset;
128+ __u64 size;
129+#define OPAL_TABLE_READ (1 << OPAL_READ_TABLE)
130+#define OPAL_TABLE_WRITE (1 << OPAL_WRITE_TABLE)
131+ __u64 flags;
132+ __u64 priv;
133+};
134+
116135 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
117136 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
118137 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,5 +147,6 @@ struct opal_shadow_mbr { · 9 unmodified lines
128147 #define IOC_OPAL_PSID_REVERT_TPR _IOW('p', 232, struct opal_key)
129148 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
130149 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
150+#define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
131151
132152 #endif /* _UAPI_SED_OPAL_H */
include/uapi/linux/sem.h+2−2
@@ -24,8 +24,8 @@ · 23 unmodified lines
2424 /* Obsolete, used only for backwards compatibility and libc5 compiles */
2525 struct semid_ds {
2626 struct ipc_perm sem_perm; /* permissions .. see ipc.h */
27− __kernel_time_t sem_otime; /* last semop time */
28− __kernel_time_t sem_ctime; /* create/last semctl() time */
27+ __kernel_old_time_t sem_otime; /* last semop time */
28+ __kernel_old_time_t sem_ctime; /* create/last semctl() time */
2929 struct sem *sem_base; /* ptr to first semaphore in array */
3030 struct sem_queue *sem_pending; /* pending operations to be processed */
3131 struct sem_queue **sem_pending_last; /* last pending operation */
include/uapi/linux/serial_core.h+1−1
@@ -290,7 +290,7 @@ · 289 unmodified lines
290290 /* Sunix UART */
291291 #define PORT_SUNIX 121
292292
293−/* Freescale Linflex UART */
293+/* Freescale LINFlexD UART */
294294 #define PORT_LINFLEXUART 122
295295
296296 #endif /* _UAPILINUX_SERIAL_CORE_H */
include/uapi/linux/shm.h+3−3
@@ -28,9 +28,9 @@ · 27 unmodified lines
2828 struct shmid_ds {
2929 struct ipc_perm shm_perm; /* operation perms */
3030 int shm_segsz; /* size of segment (bytes) */
31− __kernel_time_t shm_atime; /* last attach time */
32− __kernel_time_t shm_dtime; /* last detach time */
33− __kernel_time_t shm_ctime; /* last change time */
31+ __kernel_old_time_t shm_atime; /* last attach time */
32+ __kernel_old_time_t shm_dtime; /* last detach time */
33+ __kernel_old_time_t shm_ctime; /* last change time */
3434 __kernel_ipc_pid_t shm_cpid; /* pid of creator */
3535 __kernel_ipc_pid_t shm_lpid; /* pid of last operator */
3636 unsigned short shm_nattch; /* no. of current attaches */
include/uapi/linux/snmp.h+17−0
@@ -323,4 +323,21 @@ enum · 322 unmodified lines
323323 __LINUX_MIB_XFRMMAX
324324 };
325325
326+/* linux TLS mib definitions */
327+enum
328+{
329+ LINUX_MIB_TLSNUM = 0,
330+ LINUX_MIB_TLSCURRTXSW, /* TlsCurrTxSw */
331+ LINUX_MIB_TLSCURRRXSW, /* TlsCurrRxSw */
332+ LINUX_MIB_TLSCURRTXDEVICE, /* TlsCurrTxDevice */
333+ LINUX_MIB_TLSCURRRXDEVICE, /* TlsCurrRxDevice */
334+ LINUX_MIB_TLSTXSW, /* TlsTxSw */
335+ LINUX_MIB_TLSRXSW, /* TlsRxSw */
336+ LINUX_MIB_TLSTXDEVICE, /* TlsTxDevice */
337+ LINUX_MIB_TLSRXDEVICE, /* TlsRxDevice */
338+ LINUX_MIB_TLSDECRYPTERROR, /* TlsDecryptError */
339+ LINUX_MIB_TLSRXDEVICERESYNC, /* TlsRxDeviceResync */
340+ __LINUX_MIB_TLSMAX
341+};
342+
326343 #endif /* _LINUX_SNMP_H */
include/uapi/linux/stat.h+1−1
@@ -167,8 +167,8 @@ struct statx { · 166 unmodified lines
167167 #define STATX_ATTR_APPEND 0x00000020 /* [I] File is append-only */
168168 #define STATX_ATTR_NODUMP 0x00000040 /* [I] File is not to be dumped */
169169 #define STATX_ATTR_ENCRYPTED 0x00000800 /* [I] File requires key to decrypt in fs */
170−
171170 #define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */
171+#define STATX_ATTR_VERITY 0x00100000 /* [I] Verity protected file */
172172
173173
174174 #endif /* _UAPI_LINUX_STAT_H */
include/uapi/linux/tc_act/tc_tunnel_key.h+29−0
@@ -50,6 +50,14 @@ enum { · 49 unmodified lines
5050 * TCA_TUNNEL_KEY_ENC_OPTS_
5151 * attributes
5252 */
53+ TCA_TUNNEL_KEY_ENC_OPTS_VXLAN, /* Nested
54+ * TCA_TUNNEL_KEY_ENC_OPTS_
55+ * attributes
56+ */
57+ TCA_TUNNEL_KEY_ENC_OPTS_ERSPAN, /* Nested
58+ * TCA_TUNNEL_KEY_ENC_OPTS_
59+ * attributes
60+ */
5361 __TCA_TUNNEL_KEY_ENC_OPTS_MAX,
5462 };
5563
@@ -67,4 +75,25 @@ enum { · 11 unmodified lines
6775 #define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX \
6876 (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
6977
78+enum {
79+ TCA_TUNNEL_KEY_ENC_OPT_VXLAN_UNSPEC,
80+ TCA_TUNNEL_KEY_ENC_OPT_VXLAN_GBP, /* u32 */
81+ __TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX,
82+};
83+
84+#define TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX \
85+ (__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX - 1)
86+
87+enum {
88+ TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_UNSPEC,
89+ TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_VER, /* u8 */
90+ TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_INDEX, /* be32 */
91+ TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_DIR, /* u8 */
92+ TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_HWID, /* u8 */
93+ __TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX,
94+};
95+
96+#define TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX \
97+ (__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX - 1)
98+
7099 #endif
include/uapi/linux/tcp.h+9−1
@@ -155,6 +155,14 @@ enum { · 154 unmodified lines
155155 TCP_QUEUES_NR,
156156 };
157157
158+/* why fastopen failed from client perspective */
159+enum tcp_fastopen_client_fail {
160+ TFO_STATUS_UNSPEC, /* catch-all */
161+ TFO_COOKIE_UNAVAILABLE, /* if not in TFO_CLIENT_NO_COOKIE mode */
162+ TFO_DATA_NOT_ACKED, /* SYN-ACK did not ack SYN data */
163+ TFO_SYN_RETRANSMITTED, /* SYN-ACK did not ack SYN data after timeout */
164+};
165+
158166 /* for TCP_INFO socket option */
159167 #define TCPI_OPT_TIMESTAMPS 1
160168 #define TCPI_OPT_SACK 2
@@ -211,7 +219,7 @@ struct tcp_info { · 50 unmodified lines
211219 __u8 tcpi_backoff;
212220 __u8 tcpi_options;
213221 __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
214− __u8 tcpi_delivery_rate_app_limited:1;
222+ __u8 tcpi_delivery_rate_app_limited:1, tcpi_fastopen_client_fail:2;
215223
216224 __u32 tcpi_rto;
217225 __u32 tcpi_ato;
include/uapi/linux/time.h+3−3
@@ -8,13 +8,13 @@ · 7 unmodified lines
88 #ifndef _STRUCT_TIMESPEC
99 #define _STRUCT_TIMESPEC
1010 struct timespec {
11− __kernel_time_t tv_sec; /* seconds */
12− long tv_nsec; /* nanoseconds */
11+ __kernel_old_time_t tv_sec; /* seconds */
12+ long tv_nsec; /* nanoseconds */
1313 };
1414 #endif
1515
1616 struct timeval {
17− __kernel_time_t tv_sec; /* seconds */
17+ __kernel_old_time_t tv_sec; /* seconds */
1818 __kernel_suseconds_t tv_usec; /* microseconds */
1919 };
2020
include/uapi/linux/time_types.h+5−0
@@ -28,6 +28,11 @@ struct __kernel_old_timeval { · 27 unmodified lines
2828 };
2929 #endif
3030
31+struct __kernel_old_timespec {
32+ __kernel_old_time_t tv_sec; /* seconds */
33+ long tv_nsec; /* nanoseconds */
34+};
35+
3136 struct __kernel_sock_timeval {
3237 __s64 tv_sec;
3338 __s64 tv_usec;
include/uapi/linux/tipc.h+22−0
@@ -191,6 +191,7 @@ struct sockaddr_tipc { · 190 unmodified lines
191191 #define TIPC_GROUP_JOIN 135 /* Takes struct tipc_group_req* */
192192 #define TIPC_GROUP_LEAVE 136 /* No argument */
193193 #define TIPC_SOCK_RECVQ_USED 137 /* Default: none (read only) */
194+#define TIPC_NODELAY 138 /* Default: false */
194195
195196 /*
196197 * Flag values
@@ -232,6 +233,27 @@ struct tipc_sioc_nodeid_req { · 35 unmodified lines
232233 char node_id[TIPC_NODEID_LEN];
233234 };
234235
236+/*
237+ * TIPC Crypto, AEAD
238+ */
239+#define TIPC_AEAD_ALG_NAME (32)
240+
241+struct tipc_aead_key {
242+ char alg_name[TIPC_AEAD_ALG_NAME];
243+ unsigned int keylen; /* in bytes */
244+ char key[];
245+};
246+
247+#define TIPC_AEAD_KEYLEN_MIN (16 + 4)
248+#define TIPC_AEAD_KEYLEN_MAX (32 + 4)
249+#define TIPC_AEAD_KEY_SIZE_MAX (sizeof(struct tipc_aead_key) + \
250+ TIPC_AEAD_KEYLEN_MAX)
251+
252+static inline int tipc_aead_key_size(struct tipc_aead_key *key)
253+{
254+ return sizeof(*key) + key->keylen;
255+}
256+
235257 /* The macros and functions below are deprecated:
236258 */
237259
include/uapi/linux/tipc_config.h+2−2
@@ -309,7 +309,7 @@ static inline int TLV_SET(void *tlv, __u16 type, void *data, __u16 len) · 308 unmodified lines
309309 tlv_ptr->tlv_len = htons(tlv_len);
310310 if (len && data) {
311311 memcpy(TLV_DATA(tlv_ptr), data, len);
312− memset(TLV_DATA(tlv_ptr) + len, 0, TLV_SPACE(len) - tlv_len);
312+ memset((char *)TLV_DATA(tlv_ptr) + len, 0, TLV_SPACE(len) - tlv_len);
313313 }
314314 return TLV_SPACE(len);
315315 }
@@ -409,7 +409,7 @@ static inline int TCM_SET(void *msg, __u16 cmd, __u16 flags, · 93 unmodified lines
409409 tcm_hdr->tcm_flags = htons(flags);
410410 if (data_len && data) {
411411 memcpy(TCM_DATA(msg), data, data_len);
412− memset(TCM_DATA(msg) + data_len, 0, TCM_SPACE(data_len) - msg_len);
412+ memset((char *)TCM_DATA(msg) + data_len, 0, TCM_SPACE(data_len) - msg_len);
413413 }
414414 return TCM_SPACE(data_len);
415415 }
include/uapi/linux/tipc_netlink.h+4−0
@@ -63,6 +63,8 @@ enum { · 62 unmodified lines
6363 TIPC_NL_PEER_REMOVE,
6464 TIPC_NL_BEARER_ADD,
6565 TIPC_NL_UDP_GET_REMOTEIP,
66+ TIPC_NL_KEY_SET,
67+ TIPC_NL_KEY_FLUSH,
6668
6769 __TIPC_NL_CMD_MAX,
6870 TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
@@ -160,6 +162,8 @@ enum { · 91 unmodified lines
160162 TIPC_NLA_NODE_UNSPEC,
161163 TIPC_NLA_NODE_ADDR, /* u32 */
162164 TIPC_NLA_NODE_UP, /* flag */
165+ TIPC_NLA_NODE_ID, /* data */
166+ TIPC_NLA_NODE_KEY, /* data */
163167
164168 __TIPC_NLA_NODE_MAX,
165169 TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1
include/uapi/linux/utime.h+2−2
@@ -5,8 +5,8 @@ · 4 unmodified lines
55 #include <linux/types.h>
66
77 struct utimbuf {
8− __kernel_time_t actime;
9− __kernel_time_t modtime;
8+ __kernel_old_time_t actime;
9+ __kernel_old_time_t modtime;
1010 };
1111
1212 #endif
include/uapi/linux/v4l2-controls.h+1−0
@@ -1034,6 +1034,7 @@ enum v4l2_jpeg_chroma_subsampling { · 1033 unmodified lines
10341034 #define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
10351035 #define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
10361036 #define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
1037+#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
10371038
10381039
10391040 /* Image processing controls */
include/uapi/linux/videodev2.h+17−5
@@ -422,6 +422,11 @@ struct v4l2_fract { · 421 unmodified lines
422422 __u32 denominator;
423423 };
424424
425+struct v4l2_area {
426+ __u32 width;
427+ __u32 height;
428+};
429+
425430 /**
426431 * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP
427432 *
@@ -755,6 +760,7 @@ struct v4l2_pix_format { · 327 unmodified lines
755760 #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */
756761 #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */
757762 #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */
763+#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */
758764
759765 /* priv field value to indicates that subsequent fields are valid. */
760766 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
@@ -915,11 +921,12 @@ struct v4l2_requestbuffers { · 154 unmodified lines
915921 };
916922
917923 /* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */
918−#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
919−#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
920−#define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2)
921−#define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3)
922−#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)
924+#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
925+#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
926+#define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2)
927+#define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3)
928+#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)
929+#define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5)
923930
924931 /**
925932 * struct v4l2_plane - plane info for multi-planar buffers
@@ -1041,6 +1048,8 @@ static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv) · 115 unmodified lines
10411048 #define V4L2_BUF_FLAG_IN_REQUEST 0x00000080
10421049 /* timecode field is valid */
10431050 #define V4L2_BUF_FLAG_TIMECODE 0x00000100
1051+/* Don't return the capture buffer until OUTPUT timestamp changes */
1052+#define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF 0x00000200
10441053 /* Buffer is prepared for queuing */
10451054 #define V4L2_BUF_FLAG_PREPARED 0x00000400
10461055 /* Cache handling flags */
@@ -1675,6 +1684,7 @@ struct v4l2_ext_control { · 628 unmodified lines
16751684 __u8 __user *p_u8;
16761685 __u16 __user *p_u16;
16771686 __u32 __user *p_u32;
1687+ struct v4l2_area __user *p_area;
16781688 void __user *ptr;
16791689 };
16801690 } __attribute__ ((packed));
@@ -1720,6 +1730,7 @@ enum v4l2_ctrl_type { · 39 unmodified lines
17201730 V4L2_CTRL_TYPE_U8 = 0x0100,
17211731 V4L2_CTRL_TYPE_U16 = 0x0101,
17221732 V4L2_CTRL_TYPE_U32 = 0x0102,
1733+ V4L2_CTRL_TYPE_AREA = 0x0106,
17231734 };
17241735
17251736 /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
@@ -1975,6 +1986,7 @@ struct v4l2_encoder_cmd { · 249 unmodified lines
19751986 #define V4L2_DEC_CMD_STOP (1)
19761987 #define V4L2_DEC_CMD_PAUSE (2)
19771988 #define V4L2_DEC_CMD_RESUME (3)
1989+#define V4L2_DEC_CMD_FLUSH (4)
19781990
19791991 /* Flags for V4L2_DEC_CMD_START */
19801992 #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0)
include/uapi/linux/virtio_ring.h+1−1
@@ -169,7 +169,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, · 168 unmodified lines
169169 {
170170 vr->num = num;
171171 vr->desc = p;
172− vr->avail = p + num*sizeof(struct vring_desc);
172+ vr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc));
173173 vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16)
174174 + align-1) & ~(align - 1));
175175 }