mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-14 03:41:29 +00:00
There is a regular need in the kernel to provide a way to declare
having a dynamically sized set of trailing elements in a structure.
Kernel code should always use “flexible array members”[1] for these
cases. The older style of one-element or zero-length arrays should
no longer be used[2].
This code was transformed with the help of Coccinelle:
(next-20220214$ spatch --jobs $(getconf _NPROCESSORS_ONLN) --sp-file script.cocci --include-headers --dir . > output.patch)
@@
identifier S, member, array;
type T1, T2;
@@
struct S {
...
T1 member;
T2 array[
- 0
];
};
UAPI and wireless changes were intentionally excluded from this patch
and will be sent out separately.
[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://www.kernel.org/doc/html/v5.16/process/deprecated.html#zero-length-and-one-element-arrays
Link: https://github.com/KSPP/linux/issues/78
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
70 lines
1.4 KiB
C
70 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright IBM Corp. 2020
|
|
*
|
|
* Author(s): Alexandra Winter <wintera@linux.ibm.com>
|
|
*
|
|
* Interface for Channel Subsystem Call
|
|
*/
|
|
#ifndef _ASM_S390_CHSC_H
|
|
#define _ASM_S390_CHSC_H
|
|
|
|
#include <uapi/asm/chsc.h>
|
|
|
|
/**
|
|
* Operation codes for CHSC PNSO:
|
|
* PNSO_OC_NET_BRIDGE_INFO - only addresses that are visible to a bridgeport
|
|
* PNSO_OC_NET_ADDR_INFO - all addresses
|
|
*/
|
|
#define PNSO_OC_NET_BRIDGE_INFO 0
|
|
#define PNSO_OC_NET_ADDR_INFO 3
|
|
/**
|
|
* struct chsc_pnso_naid_l2 - network address information descriptor
|
|
* @nit: Network interface token
|
|
* @addr_lnid: network address and logical network id (VLAN ID)
|
|
*/
|
|
struct chsc_pnso_naid_l2 {
|
|
u64 nit;
|
|
struct { u8 mac[6]; u16 lnid; } addr_lnid;
|
|
} __packed;
|
|
|
|
struct chsc_pnso_resume_token {
|
|
u64 t1;
|
|
u64 t2;
|
|
} __packed;
|
|
|
|
struct chsc_pnso_naihdr {
|
|
struct chsc_pnso_resume_token resume_token;
|
|
u32:32;
|
|
u32 instance;
|
|
u32:24;
|
|
u8 naids;
|
|
u32 reserved[3];
|
|
} __packed;
|
|
|
|
struct chsc_pnso_area {
|
|
struct chsc_header request;
|
|
u8:2;
|
|
u8 m:1;
|
|
u8:5;
|
|
u8:2;
|
|
u8 ssid:2;
|
|
u8 fmt:4;
|
|
u16 sch;
|
|
u8:8;
|
|
u8 cssid;
|
|
u16:16;
|
|
u8 oc;
|
|
u32:24;
|
|
struct chsc_pnso_resume_token resume_token;
|
|
u32 n:1;
|
|
u32:31;
|
|
u32 reserved[3];
|
|
struct chsc_header response;
|
|
u32:32;
|
|
struct chsc_pnso_naihdr naihdr;
|
|
struct chsc_pnso_naid_l2 entries[];
|
|
} __packed __aligned(PAGE_SIZE);
|
|
|
|
#endif /* _ASM_S390_CHSC_H */
|