This is a note to let you know that I've just added the patch titled
strparser: Fix sign of err codes
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
strparser-fix-sign-of-err-codes.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Dave Watson <davejwatson(a)fb.com>
Date: Mon, 26 Mar 2018 12:31:21 -0700
Subject: strparser: Fix sign of err codes
From: Dave Watson <davejwatson(a)fb.com>
[ Upstream commit cd00edc179863848abab5cc5683de5b7b5f70954 ]
strp_parser_err is called with a negative code everywhere, which then
calls abort_parser with a negative code. strp_msg_timeout calls
abort_parser directly with a positive code. Negate ETIMEDOUT
to match signed-ness of other calls.
The default abort_parser callback, strp_abort_strp, sets
sk->sk_err to err. Also negate the error here so sk_err always
holds a positive value, as the rest of the net code expects. Currently
a negative sk_err can result in endless loops, or user code that
thinks it actually sent/received err bytes.
Found while testing net/tls_sw recv path.
Fixes: 43a0c6751a322847 ("strparser: Stream parser for messages")
Signed-off-by: Dave Watson <davejwatson(a)fb.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/strparser/strparser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/net/strparser/strparser.c
+++ b/net/strparser/strparser.c
@@ -60,7 +60,7 @@ static void strp_abort_strp(struct strpa
struct sock *sk = strp->sk;
/* Report an error on the lower socket */
- sk->sk_err = err;
+ sk->sk_err = -err;
sk->sk_error_report(sk);
}
}
@@ -458,7 +458,7 @@ static void strp_msg_timeout(struct work
/* Message assembly timed out */
STRP_STATS_INCR(strp->stats.msg_timeouts);
strp->cb.lock(strp);
- strp->cb.abort_parser(strp, ETIMEDOUT);
+ strp->cb.abort_parser(strp, -ETIMEDOUT);
strp->cb.unlock(strp);
}
Patches currently in stable-queue which might be from davejwatson(a)fb.com are
queue-4.15/strparser-fix-sign-of-err-codes.patch
This is a note to let you know that I've just added the patch titled
sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Sun, 8 Apr 2018 07:52:08 -0700
Subject: sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 81e98370293afcb58340ce8bd71af7b97f925c26 ]
Check must happen before call to ipv6_addr_v4mapped()
syzbot report was :
BUG: KMSAN: uninit-value in sctp_sockaddr_af net/sctp/socket.c:359 [inline]
BUG: KMSAN: uninit-value in sctp_do_bind+0x60f/0xdc0 net/sctp/socket.c:384
CPU: 0 PID: 3576 Comm: syzkaller968804 Not tainted 4.16.0+ #82
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x185/0x1d0 lib/dump_stack.c:53
kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
__msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
sctp_sockaddr_af net/sctp/socket.c:359 [inline]
sctp_do_bind+0x60f/0xdc0 net/sctp/socket.c:384
sctp_bind+0x149/0x190 net/sctp/socket.c:332
inet6_bind+0x1fd/0x1820 net/ipv6/af_inet6.c:293
SYSC_bind+0x3f2/0x4b0 net/socket.c:1474
SyS_bind+0x54/0x80 net/socket.c:1460
do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x3d/0xa2
RIP: 0033:0x43fd49
RSP: 002b:00007ffe99df3d28 EFLAGS: 00000213 ORIG_RAX: 0000000000000031
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043fd49
RDX: 0000000000000010 RSI: 0000000020000000 RDI: 0000000000000003
RBP: 00000000006ca018 R08: 00000000004002c8 R09: 00000000004002c8
R10: 00000000004002c8 R11: 0000000000000213 R12: 0000000000401670
R13: 0000000000401700 R14: 0000000000000000 R15: 0000000000000000
Local variable description: ----address@SYSC_bind
Variable was created at:
SYSC_bind+0x6f/0x4b0 net/socket.c:1461
SyS_bind+0x54/0x80 net/socket.c:1460
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Vlad Yasevich <vyasevich(a)gmail.com>
Cc: Neil Horman <nhorman(a)tuxdriver.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/sctp/socket.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -338,11 +338,14 @@ static struct sctp_af *sctp_sockaddr_af(
if (!opt->pf->af_supported(addr->sa.sa_family, opt))
return NULL;
- /* V4 mapped address are really of AF_INET family */
- if (addr->sa.sa_family == AF_INET6 &&
- ipv6_addr_v4mapped(&addr->v6.sin6_addr) &&
- !opt->pf->af_supported(AF_INET, opt))
- return NULL;
+ if (addr->sa.sa_family == AF_INET6) {
+ if (len < SIN6_LEN_RFC2133)
+ return NULL;
+ /* V4 mapped address are really of AF_INET family */
+ if (ipv6_addr_v4mapped(&addr->v6.sin6_addr) &&
+ !opt->pf->af_supported(AF_INET, opt))
+ return NULL;
+ }
/* If we get this far, af is valid. */
af = sctp_get_af_specific(addr->sa.sa_family);
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
sky2: Increase D3 delay to sky2 stops working after suspend
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sky2-increase-d3-delay-to-sky2-stops-working-after-suspend.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Kai-Heng Feng <kai.heng.feng(a)canonical.com>
Date: Sat, 31 Mar 2018 23:42:03 +0800
Subject: sky2: Increase D3 delay to sky2 stops working after suspend
From: Kai-Heng Feng <kai.heng.feng(a)canonical.com>
[ Upstream commit afb133637071be6deeb8b3d0e55593ffbf63c527 ]
The sky2 ethernet stops working after system resume from suspend:
[ 582.852065] sky2 0000:04:00.0: Refused to change power state, currently in D3
The current 150ms delay is not enough, change it to 200ms can solve the
issue.
BugLink: https://bugs.launchpad.net/bugs/1758507
Cc: Stable <stable(a)vger.kernel.org>
Signed-off-by: Kai-Heng Feng <kai.heng.feng(a)canonical.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/marvell/sky2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -5087,7 +5087,7 @@ static int sky2_probe(struct pci_dev *pd
INIT_WORK(&hw->restart_work, sky2_restart);
pci_set_drvdata(pdev, hw);
- pdev->d3_delay = 150;
+ pdev->d3_delay = 200;
return 0;
Patches currently in stable-queue which might be from kai.heng.feng(a)canonical.com are
queue-4.15/sky2-increase-d3-delay-to-sky2-stops-working-after-suspend.patch
queue-4.15/drm-i915-cnp-properly-handle-vbt-ddc-pin-out-of-bounds.patch
queue-4.15/drm-i915-cnp-ignore-vbt-request-for-know-invalid-ddc-pin.patch
This is a note to let you know that I've just added the patch titled
sctp: do not leak kernel memory to user space
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sctp-do-not-leak-kernel-memory-to-user-space.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Sat, 7 Apr 2018 17:15:22 -0700
Subject: sctp: do not leak kernel memory to user space
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 6780db244d6b1537d139dea0ec8aad10cf9e4adb ]
syzbot produced a nice report [1]
Issue here is that a recvmmsg() managed to leak 8 bytes of kernel memory
to user space, because sin_zero (padding field) was not properly cleared.
[1]
BUG: KMSAN: uninit-value in copy_to_user include/linux/uaccess.h:184 [inline]
BUG: KMSAN: uninit-value in move_addr_to_user+0x32e/0x530 net/socket.c:227
CPU: 1 PID: 3586 Comm: syzkaller481044 Not tainted 4.16.0+ #82
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x185/0x1d0 lib/dump_stack.c:53
kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
copy_to_user include/linux/uaccess.h:184 [inline]
move_addr_to_user+0x32e/0x530 net/socket.c:227
___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
__sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x3d/0xa2
RIP: 0033:0x4401c9
RSP: 002b:00007ffc56f73098 EFLAGS: 00000217 ORIG_RAX: 000000000000012b
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004401c9
RDX: 0000000000000001 RSI: 0000000020003ac0 RDI: 0000000000000003
RBP: 00000000006ca018 R08: 0000000020003bc0 R09: 0000000000000010
R10: 0000000000000000 R11: 0000000000000217 R12: 0000000000401af0
R13: 0000000000401b80 R14: 0000000000000000 R15: 0000000000000000
Local variable description: ----addr@___sys_recvmsg
Variable was created at:
___sys_recvmsg+0xd5/0x810 net/socket.c:2172
__sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
Bytes 8-15 of 16 are uninitialized
==================================================================
Kernel panic - not syncing: panic_on_warn set ...
CPU: 1 PID: 3586 Comm: syzkaller481044 Tainted: G B 4.16.0+ #82
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x185/0x1d0 lib/dump_stack.c:53
panic+0x39d/0x940 kernel/panic.c:183
kmsan_report+0x238/0x240 mm/kmsan/kmsan.c:1083
kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
copy_to_user include/linux/uaccess.h:184 [inline]
move_addr_to_user+0x32e/0x530 net/socket.c:227
___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
__sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x3d/0xa2
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Vlad Yasevich <vyasevich(a)gmail.com>
Cc: Neil Horman <nhorman(a)tuxdriver.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/sctp/ipv6.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -728,8 +728,10 @@ static int sctp_v6_addr_to_user(struct s
sctp_v6_map_v4(addr);
}
- if (addr->sa.sa_family == AF_INET)
+ if (addr->sa.sa_family == AF_INET) {
+ memset(addr->v4.sin_zero, 0, sizeof(addr->v4.sin_zero));
return sizeof(struct sockaddr_in);
+ }
return sizeof(struct sockaddr_in6);
}
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
route: check sysctl_fib_multipath_use_neigh earlier than hash
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Sun, 1 Apr 2018 22:40:35 +0800
Subject: route: check sysctl_fib_multipath_use_neigh earlier than hash
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit 6174a30df1b902e1fedbd728f5343937e83e64e6 ]
Prior to this patch, when one packet is hashed into path [1]
(hash <= nh_upper_bound) and it's neigh is dead, it will try
path [2]. However, if path [2]'s neigh is alive but it's
hash > nh_upper_bound, it will not return this alive path.
This packet will never be sent even if path [2] is alive.
3.3.3.1/24:
nexthop via 1.1.1.254 dev eth1 weight 1 <--[1] (dead neigh)
nexthop via 2.2.2.254 dev eth2 weight 1 <--[2]
With sysctl_fib_multipath_use_neigh set is supposed to find an
available path respecting to the l3/l4 hash. But if there is
no available route with this hash, it should at least return
an alive route even with other hash.
This patch is to fix it by processing fib_multipath_use_neigh
earlier than the hash check, so that it will at least return
an alive route if there is when fib_multipath_use_neigh is
enabled. It's also compatible with before when there are alive
routes with the l3/l4 hash.
Fixes: a6db4494d218 ("net: ipv4: Consider failed nexthops in multipath routes")
Reported-by: Jianlin Shi <jishi(a)redhat.com>
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Acked-by: David Ahern <dsa(a)cumulusnetworks.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv4/fib_semantics.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -1746,18 +1746,20 @@ void fib_select_multipath(struct fib_res
bool first = false;
for_nexthops(fi) {
+ if (net->ipv4.sysctl_fib_multipath_use_neigh) {
+ if (!fib_good_nh(nh))
+ continue;
+ if (!first) {
+ res->nh_sel = nhsel;
+ first = true;
+ }
+ }
+
if (hash > atomic_read(&nh->nh_upper_bound))
continue;
- if (!net->ipv4.sysctl_fib_multipath_use_neigh ||
- fib_good_nh(nh)) {
- res->nh_sel = nhsel;
- return;
- }
- if (!first) {
- res->nh_sel = nhsel;
- first = true;
- }
+ res->nh_sel = nhsel;
+ return;
} endfor_nexthops(fi);
}
#endif
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.15/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.15/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.15/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.15/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.15/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
r8169: fix setting driver_data after register_netdev
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
r8169-fix-setting-driver_data-after-register_netdev.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Heiner Kallweit <hkallweit1(a)gmail.com>
Date: Mon, 26 Mar 2018 19:19:30 +0200
Subject: r8169: fix setting driver_data after register_netdev
From: Heiner Kallweit <hkallweit1(a)gmail.com>
[ Upstream commit 19c9ea363a244f85f90a424f9936e6d56449e33c ]
pci_set_drvdata() is called only after registering the net_device,
therefore we could run into a NPE if one of the functions using
driver_data is called before it's set.
Fix this by calling pci_set_drvdata() before registering the
net_device.
This fix is a candidate for stable. As far as I can see the
bug has been there in kernel version 3.2 already, therefore
I can't provide a reference which commit is fixed by it.
The fix may need small adjustments per kernel version because
due to other changes the label which is jumped to if
register_netdev() fails has changed over time.
Reported-by: David Miller <davem(a)davemloft.net>
Signed-off-by: Heiner Kallweit <hkallweit1(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/realtek/r8169.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -8699,12 +8699,12 @@ static int rtl_init_one(struct pci_dev *
goto err_out_msi_5;
}
+ pci_set_drvdata(pdev, dev);
+
rc = register_netdev(dev);
if (rc < 0)
goto err_out_cnt_6;
- pci_set_drvdata(pdev, dev);
-
netif_info(tp, probe, dev, "%s at 0x%p, %pM, XID %08x IRQ %d\n",
rtl_chip_infos[chipset].name, ioaddr, dev->dev_addr,
(u32)(RTL_R32(TxConfig) & 0x9cf0f8ff), pdev->irq);
Patches currently in stable-queue which might be from hkallweit1(a)gmail.com are
queue-4.15/r8169-fix-setting-driver_data-after-register_netdev.patch
This is a note to let you know that I've just added the patch titled
pptp: remove a buggy dst release in pptp_connect()
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Mon, 2 Apr 2018 18:48:37 -0700
Subject: pptp: remove a buggy dst release in pptp_connect()
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit bfacfb457b36911a10140b8cb3ce76a74883ac5a ]
Once dst has been cached in socket via sk_setup_caps(),
it is illegal to call ip_rt_put() (or dst_release()),
since sk_setup_caps() did not change dst refcount.
We can still dereference it since we hold socket lock.
Caugth by syzbot :
BUG: KASAN: use-after-free in atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
BUG: KASAN: use-after-free in dst_release+0x27/0xa0 net/core/dst.c:185
Write of size 4 at addr ffff8801c54dc040 by task syz-executor4/20088
CPU: 1 PID: 20088 Comm: syz-executor4 Not tainted 4.16.0+ #376
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1a7/0x27d lib/dump_stack.c:53
print_address_description+0x73/0x250 mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report+0x23c/0x360 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x137/0x190 mm/kasan/kasan.c:267
kasan_check_write+0x14/0x20 mm/kasan/kasan.c:278
atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
dst_release+0x27/0xa0 net/core/dst.c:185
sk_dst_set include/net/sock.h:1812 [inline]
sk_dst_reset include/net/sock.h:1824 [inline]
sock_setbindtodevice net/core/sock.c:610 [inline]
sock_setsockopt+0x431/0x1b20 net/core/sock.c:707
SYSC_setsockopt net/socket.c:1845 [inline]
SyS_setsockopt+0x2ff/0x360 net/socket.c:1828
do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
RIP: 0033:0x4552d9
RSP: 002b:00007f4878126c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
RAX: ffffffffffffffda RBX: 00007f48781276d4 RCX: 00000000004552d9
RDX: 0000000000000019 RSI: 0000000000000001 RDI: 0000000000000013
RBP: 000000000072bea0 R08: 0000000000000010 R09: 0000000000000000
R10: 00000000200010c0 R11: 0000000000000246 R12: 00000000ffffffff
R13: 0000000000000526 R14: 00000000006fac30 R15: 0000000000000000
Allocated by task 20088:
save_stack+0x43/0xd0 mm/kasan/kasan.c:447
set_track mm/kasan/kasan.c:459 [inline]
kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:552
kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
kmem_cache_alloc+0x12e/0x760 mm/slab.c:3542
dst_alloc+0x11f/0x1a0 net/core/dst.c:104
rt_dst_alloc+0xe9/0x540 net/ipv4/route.c:1520
__mkroute_output net/ipv4/route.c:2265 [inline]
ip_route_output_key_hash_rcu+0xa49/0x2c60 net/ipv4/route.c:2493
ip_route_output_key_hash+0x20b/0x370 net/ipv4/route.c:2322
__ip_route_output_key include/net/route.h:126 [inline]
ip_route_output_flow+0x26/0xa0 net/ipv4/route.c:2577
ip_route_output_ports include/net/route.h:163 [inline]
pptp_connect+0xa84/0x1170 drivers/net/ppp/pptp.c:453
SYSC_connect+0x213/0x4a0 net/socket.c:1639
SyS_connect+0x24/0x30 net/socket.c:1620
do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Freed by task 20082:
save_stack+0x43/0xd0 mm/kasan/kasan.c:447
set_track mm/kasan/kasan.c:459 [inline]
__kasan_slab_free+0x11a/0x170 mm/kasan/kasan.c:520
kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:527
__cache_free mm/slab.c:3486 [inline]
kmem_cache_free+0x83/0x2a0 mm/slab.c:3744
dst_destroy+0x266/0x380 net/core/dst.c:140
dst_destroy_rcu+0x16/0x20 net/core/dst.c:153
__rcu_reclaim kernel/rcu/rcu.h:178 [inline]
rcu_do_batch kernel/rcu/tree.c:2675 [inline]
invoke_rcu_callbacks kernel/rcu/tree.c:2930 [inline]
__rcu_process_callbacks kernel/rcu/tree.c:2897 [inline]
rcu_process_callbacks+0xd6c/0x17b0 kernel/rcu/tree.c:2914
__do_softirq+0x2d7/0xb85 kernel/softirq.c:285
The buggy address belongs to the object at ffff8801c54dc000
which belongs to the cache ip_dst_cache of size 168
The buggy address is located 64 bytes inside of
168-byte region [ffff8801c54dc000, ffff8801c54dc0a8)
The buggy address belongs to the page:
page:ffffea0007153700 count:1 mapcount:0 mapping:ffff8801c54dc000 index:0x0
flags: 0x2fffc0000000100(slab)
raw: 02fffc0000000100 ffff8801c54dc000 0000000000000000 0000000100000010
raw: ffffea0006b34b20 ffffea0006b6c1e0 ffff8801d674a1c0 0000000000000000
page dumped because: kasan: bad access detected
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ppp/pptp.c | 1 -
1 file changed, 1 deletion(-)
--- a/drivers/net/ppp/pptp.c
+++ b/drivers/net/ppp/pptp.c
@@ -464,7 +464,6 @@ static int pptp_connect(struct socket *s
po->chan.mtu = dst_mtu(&rt->dst);
if (!po->chan.mtu)
po->chan.mtu = PPP_MRU;
- ip_rt_put(rt);
po->chan.mtu -= PPTP_HEADER_OVERHEAD;
po->chan.hdrlen = 2 + sizeof(struct pptp_gre_header);
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
nfp: use full 40 bits of the NSP buffer address
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
nfp-use-full-40-bits-of-the-nsp-buffer-address.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Dirk van der Merwe <dirk.vandermerwe(a)netronome.com>
Date: Tue, 3 Apr 2018 17:24:23 -0700
Subject: nfp: use full 40 bits of the NSP buffer address
From: Dirk van der Merwe <dirk.vandermerwe(a)netronome.com>
[ Upstream commit 1489bbd10e16079ce30a53d3c22a431fd47af791 ]
The NSP default buffer is a piece of NFP memory where additional
command data can be placed. Its format has been copied from
host buffer, but the PCIe selection bits do not make sense in
this case. If those get masked out from a NFP address - writes
to random place in the chip memory may be issued and crash the
device.
Even in the general NSP buffer case, it doesn't make sense to have the
PCIe selection bits there anymore. These are unused at the moment, and
when it becomes necessary, the PCIe selection bits should rather be
moved to another register to utilise more bits for the buffer address.
This has never been an issue because the buffer used to be
allocated in memory with less-than-38-bit-long address but that
is about to change.
Fixes: 1a64821c6af7 ("nfp: add support for service processor access")
Signed-off-by: Dirk van der Merwe <dirk.vandermerwe(a)netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski(a)netronome.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
+++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
@@ -68,10 +68,11 @@
/* CPP address to retrieve the data from */
#define NSP_BUFFER 0x10
#define NSP_BUFFER_CPP GENMASK_ULL(63, 40)
-#define NSP_BUFFER_PCIE GENMASK_ULL(39, 38)
-#define NSP_BUFFER_ADDRESS GENMASK_ULL(37, 0)
+#define NSP_BUFFER_ADDRESS GENMASK_ULL(39, 0)
#define NSP_DFLT_BUFFER 0x18
+#define NSP_DFLT_BUFFER_CPP GENMASK_ULL(63, 40)
+#define NSP_DFLT_BUFFER_ADDRESS GENMASK_ULL(39, 0)
#define NSP_DFLT_BUFFER_CONFIG 0x20
#define NSP_DFLT_BUFFER_SIZE_MB GENMASK_ULL(7, 0)
@@ -412,8 +413,8 @@ static int nfp_nsp_command_buf(struct nf
if (err < 0)
return err;
- cpp_id = FIELD_GET(NSP_BUFFER_CPP, reg) << 8;
- cpp_buf = FIELD_GET(NSP_BUFFER_ADDRESS, reg);
+ cpp_id = FIELD_GET(NSP_DFLT_BUFFER_CPP, reg) << 8;
+ cpp_buf = FIELD_GET(NSP_DFLT_BUFFER_ADDRESS, reg);
if (in_buf && in_size) {
err = nfp_cpp_write(cpp, cpp_id, cpp_buf, in_buf, in_size);
Patches currently in stable-queue which might be from dirk.vandermerwe(a)netronome.com are
queue-4.15/nfp-use-full-40-bits-of-the-nsp-buffer-address.patch
This is a note to let you know that I've just added the patch titled
netlink: make sure nladdr has correct size in netlink_connect()
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Alexander Potapenko <glider(a)google.com>
Date: Fri, 23 Mar 2018 13:49:02 +0100
Subject: netlink: make sure nladdr has correct size in netlink_connect()
From: Alexander Potapenko <glider(a)google.com>
[ Upstream commit 7880287981b60a6808f39f297bb66936e8bdf57a ]
KMSAN reports use of uninitialized memory in the case when |alen| is
smaller than sizeof(struct sockaddr_nl), and therefore |nladdr| isn't
fully copied from the userspace.
Signed-off-by: Alexander Potapenko <glider(a)google.com>
Fixes: 1da177e4c3f41524 ("Linux-2.6.12-rc2")
Reviewed-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/netlink/af_netlink.c | 3 +++
1 file changed, 3 insertions(+)
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -1052,6 +1052,9 @@ static int netlink_connect(struct socket
if (addr->sa_family != AF_NETLINK)
return -EINVAL;
+ if (alen < sizeof(struct sockaddr_nl))
+ return -EINVAL;
+
if ((nladdr->nl_groups || nladdr->nl_pid) &&
!netlink_allowed(sock, NL_CFG_F_NONROOT_SEND))
return -EPERM;
Patches currently in stable-queue which might be from glider(a)google.com are
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
This is a note to let you know that I've just added the patch titled
net_sched: fix a missing idr_remove() in u32_delete_key()
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net_sched-fix-a-missing-idr_remove-in-u32_delete_key.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Cong Wang <xiyou.wangcong(a)gmail.com>
Date: Fri, 6 Apr 2018 17:19:41 -0700
Subject: net_sched: fix a missing idr_remove() in u32_delete_key()
From: Cong Wang <xiyou.wangcong(a)gmail.com>
[ Upstream commit f12c643209db0626f2f54780d86bb93bfa7a9c2d ]
When we delete a u32 key via u32_delete_key(), we forget to
call idr_remove() to remove its handle from IDR.
Fixes: e7614370d6f0 ("net_sched: use idr to allocate u32 filter handles")
Reported-by: Marcin Kabiesz <admin(a)hostcenter.eu>
Tested-by: Marcin Kabiesz <admin(a)hostcenter.eu>
Signed-off-by: Cong Wang <xiyou.wangcong(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/sched/cls_u32.c | 1 +
1 file changed, 1 insertion(+)
--- a/net/sched/cls_u32.c
+++ b/net/sched/cls_u32.c
@@ -478,6 +478,7 @@ static int u32_delete_key(struct tcf_pro
RCU_INIT_POINTER(*kp, key->next);
tcf_unbind_filter(tp, &key->res);
+ idr_remove(&ht->handle_idr, key->handle);
tcf_exts_get_net(&key->exts);
call_rcu(&key->rcu, u32_delete_key_freepf_rcu);
return 0;
Patches currently in stable-queue which might be from xiyou.wangcong(a)gmail.com are
queue-4.15/net_sched-fix-a-missing-idr_remove-in-u32_delete_key.patch
This is a note to let you know that I've just added the patch titled
net sched actions: fix dumping which requires several messages to user space
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-sched-actions-fix-dumping-which-requires-several-messages-to-user-space.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Craig Dillabaugh <cdillaba(a)mojatatu.com>
Date: Mon, 26 Mar 2018 14:58:32 -0400
Subject: net sched actions: fix dumping which requires several messages to user space
From: Craig Dillabaugh <cdillaba(a)mojatatu.com>
[ Upstream commit 734549eb550c0c720bc89e50501f1b1e98cdd841 ]
Fixes a bug in the tcf_dump_walker function that can cause some actions
to not be reported when dumping a large number of actions. This issue
became more aggrevated when cookies feature was added. In particular
this issue is manifest when large cookie values are assigned to the
actions and when enough actions are created that the resulting table
must be dumped in multiple batches.
The number of actions returned in each batch is limited by the total
number of actions and the memory buffer size. With small cookies
the numeric limit is reached before the buffer size limit, which avoids
the code path triggering this bug. When large cookies are used buffer
fills before the numeric limit, and the erroneous code path is hit.
For example after creating 32 csum actions with the cookie
aaaabbbbccccdddd
$ tc actions ls action csum
total acts 26
action order 0: csum (tcp) action continue
index 1 ref 1 bind 0
cookie aaaabbbbccccdddd
.....
action order 25: csum (tcp) action continue
index 26 ref 1 bind 0
cookie aaaabbbbccccdddd
total acts 6
action order 0: csum (tcp) action continue
index 28 ref 1 bind 0
cookie aaaabbbbccccdddd
......
action order 5: csum (tcp) action continue
index 32 ref 1 bind 0
cookie aaaabbbbccccdddd
Note that the action with index 27 is omitted from the report.
Fixes: 4b3550ef530c ("[NET_SCHED]: Use nla_nest_start/nla_nest_end")"
Signed-off-by: Craig Dillabaugh <cdillaba(a)mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs(a)mojatatu.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/sched/act_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/net/sched/act_api.c
+++ b/net/sched/act_api.c
@@ -135,8 +135,10 @@ static int tcf_dump_walker(struct tcf_id
continue;
nest = nla_nest_start(skb, n_i);
- if (!nest)
+ if (!nest) {
+ index--;
goto nla_put_failure;
+ }
err = tcf_action_dump_1(skb, p, 0, 0);
if (err < 0) {
index--;
Patches currently in stable-queue which might be from cdillaba(a)mojatatu.com are
queue-4.15/net-sched-actions-fix-dumping-which-requires-several-messages-to-user-space.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Sync netdev vxlan ports at open
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-sync-netdev-vxlan-ports-at-open.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Shahar Klein <shahark(a)mellanox.com>
Date: Tue, 20 Mar 2018 14:44:40 +0200
Subject: net/mlx5e: Sync netdev vxlan ports at open
From: Shahar Klein <shahark(a)mellanox.com>
[ Upstream commit a117f73dc2430443f23e18367fa545981129c1a6 ]
When mlx5_core is loaded it is expected to sync ports
with all vxlan devices so it can support vxlan encap/decap.
This is done via udp_tunnel_get_rx_info(). Currently this
call is set in mlx5e_nic_enable() and if the netdev is not in
NETREG_REGISTERED state it will not be called.
Normally on load the netdev state is not NETREG_REGISTERED
so udp_tunnel_get_rx_info() will not be called.
Moving udp_tunnel_get_rx_info() to mlx5e_open() so
it will be called on netdev UP event and allow encap/decap.
Fixes: 610e89e05c3f ("net/mlx5e: Don't sync netdev state when not registered")
Signed-off-by: Shahar Klein <shahark(a)mellanox.com>
Reviewed-by: Roi Dayan <roid(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -2715,6 +2715,9 @@ int mlx5e_open(struct net_device *netdev
mlx5_set_port_admin_status(priv->mdev, MLX5_PORT_UP);
mutex_unlock(&priv->state_lock);
+ if (mlx5e_vxlan_allowed(priv->mdev))
+ udp_tunnel_get_rx_info(netdev);
+
return err;
}
@@ -4428,12 +4431,6 @@ static void mlx5e_nic_enable(struct mlx5
#ifdef CONFIG_MLX5_CORE_EN_DCB
mlx5e_dcbnl_init_app(priv);
#endif
- /* Device already registered: sync netdev system state */
- if (mlx5e_vxlan_allowed(mdev)) {
- rtnl_lock();
- udp_tunnel_get_rx_info(netdev);
- rtnl_unlock();
- }
queue_work(priv->wq, &priv->set_rx_mode_work);
Patches currently in stable-queue which might be from shahark(a)mellanox.com are
queue-4.15/net-mlx5e-sync-netdev-vxlan-ports-at-open.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Verify coalescing parameters in range
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-verify-coalescing-parameters-in-range.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Moshe Shemesh <moshe(a)mellanox.com>
Date: Thu, 15 Feb 2018 12:41:48 +0200
Subject: net/mlx5e: Verify coalescing parameters in range
From: Moshe Shemesh <moshe(a)mellanox.com>
[ Upstream commit b392a2078b5e0094ff38aa0c9d2a31b3f607d4ef ]
Add check of coalescing parameters received through ethtool are within
range of values supported by the HW.
Driver gets the coalescing rx/tx-usecs and rx/tx-frames as set by the
users through ethtool. The ethtool support up to 32 bit value for each.
However, mlx5 modify cq limits the coalescing time parameter to 12 bit
and coalescing frames parameters to 16 bits.
Return out of range error if user tries to set these parameters to
higher values.
Fixes: f62b8bb8f2d3 ('net/mlx5: Extend mlx5_core to support ConnectX-4 Ethernet functionality')
Signed-off-by: Moshe Shemesh <moshe(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
@@ -492,6 +492,9 @@ static int mlx5e_get_coalesce(struct net
return mlx5e_ethtool_get_coalesce(priv, coal);
}
+#define MLX5E_MAX_COAL_TIME MLX5_MAX_CQ_PERIOD
+#define MLX5E_MAX_COAL_FRAMES MLX5_MAX_CQ_COUNT
+
static void
mlx5e_set_priv_channels_coalesce(struct mlx5e_priv *priv, struct ethtool_coalesce *coal)
{
@@ -526,6 +529,20 @@ int mlx5e_ethtool_set_coalesce(struct ml
if (!MLX5_CAP_GEN(mdev, cq_moderation))
return -EOPNOTSUPP;
+ if (coal->tx_coalesce_usecs > MLX5E_MAX_COAL_TIME ||
+ coal->rx_coalesce_usecs > MLX5E_MAX_COAL_TIME) {
+ netdev_info(priv->netdev, "%s: maximum coalesce time supported is %lu usecs\n",
+ __func__, MLX5E_MAX_COAL_TIME);
+ return -ERANGE;
+ }
+
+ if (coal->tx_max_coalesced_frames > MLX5E_MAX_COAL_FRAMES ||
+ coal->rx_max_coalesced_frames > MLX5E_MAX_COAL_FRAMES) {
+ netdev_info(priv->netdev, "%s: maximum coalesced frames supported is %lu\n",
+ __func__, MLX5E_MAX_COAL_FRAMES);
+ return -ERANGE;
+ }
+
mutex_lock(&priv->state_lock);
new_channels.params = priv->channels.params;
Patches currently in stable-queue which might be from moshe(a)mellanox.com are
queue-4.15/net-mlx4_core-fix-memory-leak-while-delete-slave-s-resources.patch
queue-4.15/net-mlx5e-verify-coalescing-parameters-in-range.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Set EQE based as default TX interrupt moderation mode
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-set-eqe-based-as-default-tx-interrupt-moderation-mode.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Tal Gilboa <talgi(a)mellanox.com>
Date: Fri, 30 Mar 2018 15:50:08 -0700
Subject: net/mlx5e: Set EQE based as default TX interrupt moderation mode
From: Tal Gilboa <talgi(a)mellanox.com>
[ Upstream commit 48bfc39791b8b4a25f165e711f18b9c1617cefbc ]
The default TX moderation mode was mistakenly set to CQE based. The
intention was to add a control ability in order to improve some specific
use-cases. In general, we prefer to use EQE based moderation as it gives
much better numbers for the common cases.
CQE based causes a degradation in the common case since it resets the
moderation timer on CQE generation. This causes an issue when TSO is
well utilized (large TSO sessions). The timer is set to 16us so traffic
of ~64KB TSO sessions per second would mean timer reset (CQE per TSO
session -> long time between CQEs). In this case we quickly reach the
tcp_limit_output_bytes (256KB by default) and cause a halt in TX traffic.
By setting EQE based moderation we make sure timer would expire after
16us regardless of the packet rate.
This fixes an up to 40% packet rate and up to 23% bandwidth degradtions.
Fixes: 0088cbbc4b66 ("net/mlx5e: Enable CQE based moderation on TX CQ")
Signed-off-by: Tal Gilboa <talgi(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -4075,7 +4075,7 @@ void mlx5e_build_nic_params(struct mlx5_
struct mlx5e_params *params,
u16 max_channels)
{
- u8 cq_period_mode = 0;
+ u8 rx_cq_period_mode;
u32 link_speed = 0;
u32 pci_bw = 0;
@@ -4111,12 +4111,12 @@ void mlx5e_build_nic_params(struct mlx5_
params->lro_timeout = mlx5e_choose_lro_timeout(mdev, MLX5E_DEFAULT_LRO_TIMEOUT);
/* CQ moderation params */
- cq_period_mode = MLX5_CAP_GEN(mdev, cq_period_start_from_cqe) ?
+ rx_cq_period_mode = MLX5_CAP_GEN(mdev, cq_period_start_from_cqe) ?
MLX5_CQ_PERIOD_MODE_START_FROM_CQE :
MLX5_CQ_PERIOD_MODE_START_FROM_EQE;
params->rx_am_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
- mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
- mlx5e_set_tx_cq_mode_params(params, cq_period_mode);
+ mlx5e_set_rx_cq_mode_params(params, rx_cq_period_mode);
+ mlx5e_set_tx_cq_mode_params(params, MLX5_CQ_PERIOD_MODE_START_FROM_EQE);
/* TX inline */
params->tx_max_inline = mlx5e_get_max_inline_cap(mdev);
Patches currently in stable-queue which might be from talgi(a)mellanox.com are
queue-4.15/net-mlx5e-set-eqe-based-as-default-tx-interrupt-moderation-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Fix traffic being dropped on VF representor
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-fix-traffic-being-dropped-on-vf-representor.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Roi Dayan <roid(a)mellanox.com>
Date: Wed, 28 Feb 2018 12:56:42 +0200
Subject: net/mlx5e: Fix traffic being dropped on VF representor
From: Roi Dayan <roid(a)mellanox.com>
[ Upstream commit 4246f698dd58e3c6246fa919ef0b0a1d29a57e4a ]
Increase representor netdev RQ size to avoid dropped packets.
The current size (two) is just too small to keep up with
conventional slow path traffic patterns.
Also match the SQ size to the RQ size.
Fixes: cb67b832921c ("net/mlx5e: Introduce SRIOV VF representors")
Signed-off-by: Roi Dayan <roid(a)mellanox.com>
Reviewed-by: Paul Blakey <paulb(a)mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -44,6 +44,11 @@
#include "en_tc.h"
#include "fs_core.h"
+#define MLX5E_REP_PARAMS_LOG_SQ_SIZE \
+ max(0x6, MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE)
+#define MLX5E_REP_PARAMS_LOG_RQ_SIZE \
+ max(0x6, MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE)
+
static const char mlx5e_rep_driver_name[] = "mlx5e_rep";
static void mlx5e_rep_get_drvinfo(struct net_device *dev,
@@ -824,9 +829,9 @@ static void mlx5e_build_rep_params(struc
MLX5_CQ_PERIOD_MODE_START_FROM_CQE :
MLX5_CQ_PERIOD_MODE_START_FROM_EQE;
- params->log_sq_size = MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE;
+ params->log_sq_size = MLX5E_REP_PARAMS_LOG_SQ_SIZE;
params->rq_wq_type = MLX5_WQ_TYPE_LINKED_LIST;
- params->log_rq_size = MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE;
+ params->log_rq_size = MLX5E_REP_PARAMS_LOG_RQ_SIZE;
params->rx_am_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
Patches currently in stable-queue which might be from roid(a)mellanox.com are
queue-4.15/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.15/net-mlx5e-fix-traffic-being-dropped-on-vf-representor.patch
queue-4.15/net-mlx5e-sync-netdev-vxlan-ports-at-open.patch
queue-4.15/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Fix memory usage issues in offloading TC flows
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Jianbo Liu <jianbol(a)mellanox.com>
Date: Thu, 8 Mar 2018 09:20:55 +0000
Subject: net/mlx5e: Fix memory usage issues in offloading TC flows
From: Jianbo Liu <jianbol(a)mellanox.com>
[ Upstream commit af1607c37d9d85a66fbcf43b7f11bf3d94b9bb69 ]
For NIC flows, the parsed attributes are not freed when we exit
successfully from mlx5e_configure_flower().
There is possible double free for eswitch flows. If error is returned
from rhashtable_insert_fast(), the parse attrs will be freed in
mlx5e_tc_del_flow(), but they will be freed again before exiting
mlx5e_configure_flower().
To fix both issues we do the following:
(1) change the condition that determines if to issue the free call to
check if this flow is NIC flow, or it does not have encap action.
(2) reorder the code such that that the check and free calls are done
before we attempt to add into the hash table.
Fixes: 232c001398ae ('net/mlx5e: Add support to neighbour update flow')
Signed-off-by: Jianbo Liu <jianbol(a)mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Reviewed-by: Roi Dayan <roid(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -2102,19 +2102,19 @@ int mlx5e_configure_flower(struct mlx5e_
if (err != -EAGAIN)
flow->flags |= MLX5E_TC_FLOW_OFFLOADED;
+ if (!(flow->flags & MLX5E_TC_FLOW_ESWITCH) ||
+ !(flow->esw_attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP))
+ kvfree(parse_attr);
+
err = rhashtable_insert_fast(&tc->ht, &flow->node,
tc->ht_params);
- if (err)
- goto err_del_rule;
+ if (err) {
+ mlx5e_tc_del_flow(priv, flow);
+ kfree(flow);
+ }
- if (flow->flags & MLX5E_TC_FLOW_ESWITCH &&
- !(flow->esw_attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP))
- kvfree(parse_attr);
return err;
-err_del_rule:
- mlx5e_tc_del_flow(priv, flow);
-
err_free:
kvfree(parse_attr);
kfree(flow);
Patches currently in stable-queue which might be from jianbol(a)mellanox.com are
queue-4.15/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.15/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Avoid using the ipv6 stub in the TC offload neigh update path
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-avoid-using-the-ipv6-stub-in-the-tc-offload-neigh-update-path.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Or Gerlitz <ogerlitz(a)mellanox.com>
Date: Tue, 13 Mar 2018 21:43:43 +0200
Subject: net/mlx5e: Avoid using the ipv6 stub in the TC offload neigh update path
From: Or Gerlitz <ogerlitz(a)mellanox.com>
[ Upstream commit 423c9db29943cfc43e3a408192e9efa4178af6a1 ]
Currently we use the global ipv6_stub var to access the ipv6 global
nd table. This practice gets us to troubles when the stub is only partially
set e.g when ipv6 is loaded under the disabled policy. In this case, as of commit
343d60aada5a ("ipv6: change ipv6_stub_impl.ipv6_dst_lookup to take net argument")
the stub is not null, but stub->nd_tbl is and we crash.
As we can access the ipv6 nd_tbl directly, the fix is just to avoid the
reference through the stub. There is one place in the code where we
issue ipv6 route lookup and keep doing it through the stub, but that
mentioned commit makes sure we get -EAFNOSUPPORT from the stack.
Fixes: 232c001398ae ("net/mlx5e: Add support to neighbour update flow")
Signed-off-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Reviewed-by: Aviv Heller <avivh(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 6 +++---
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -231,7 +231,7 @@ void mlx5e_remove_sqs_fwd_rules(struct m
static void mlx5e_rep_neigh_update_init_interval(struct mlx5e_rep_priv *rpriv)
{
#if IS_ENABLED(CONFIG_IPV6)
- unsigned long ipv6_interval = NEIGH_VAR(&ipv6_stub->nd_tbl->parms,
+ unsigned long ipv6_interval = NEIGH_VAR(&nd_tbl.parms,
DELAY_PROBE_TIME);
#else
unsigned long ipv6_interval = ~0UL;
@@ -367,7 +367,7 @@ static int mlx5e_rep_netevent_event(stru
case NETEVENT_NEIGH_UPDATE:
n = ptr;
#if IS_ENABLED(CONFIG_IPV6)
- if (n->tbl != ipv6_stub->nd_tbl && n->tbl != &arp_tbl)
+ if (n->tbl != &nd_tbl && n->tbl != &arp_tbl)
#else
if (n->tbl != &arp_tbl)
#endif
@@ -415,7 +415,7 @@ static int mlx5e_rep_netevent_event(stru
* done per device delay prob time parameter.
*/
#if IS_ENABLED(CONFIG_IPV6)
- if (!p->dev || (p->tbl != ipv6_stub->nd_tbl && p->tbl != &arp_tbl))
+ if (!p->dev || (p->tbl != &nd_tbl && p->tbl != &arp_tbl))
#else
if (!p->dev || p->tbl != &arp_tbl)
#endif
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -495,7 +495,7 @@ void mlx5e_tc_update_neigh_used_value(st
tbl = &arp_tbl;
#if IS_ENABLED(CONFIG_IPV6)
else if (m_neigh->family == AF_INET6)
- tbl = ipv6_stub->nd_tbl;
+ tbl = &nd_tbl;
#endif
else
return;
Patches currently in stable-queue which might be from ogerlitz(a)mellanox.com are
queue-4.15/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.15/net-mlx5e-fix-traffic-being-dropped-on-vf-representor.patch
queue-4.15/net-mlx5e-avoid-using-the-ipv6-stub-in-the-tc-offload-neigh-update-path.patch
queue-4.15/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Don't override vport admin link state in switchdev mode
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Jianbo Liu <jianbol(a)mellanox.com>
Date: Fri, 2 Mar 2018 02:09:08 +0000
Subject: net/mlx5e: Don't override vport admin link state in switchdev mode
From: Jianbo Liu <jianbol(a)mellanox.com>
The vport admin original link state will be re-applied after returning
back to legacy mode, it is not right to change the admin link state value
when in switchdev mode.
Use direct vport commands to alter logical vport state in netdev
representor open/close flows rather than the administrative eswitch API.
Fixes: 20a1ea674783 ('net/mlx5e: Support VF vport link state control for SRIOV switchdev mode')
Signed-off-by: Jianbo Liu <jianbol(a)mellanox.com>
Reviewed-by: Roi Dayan <roid(a)mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -611,7 +611,6 @@ static int mlx5e_rep_open(struct net_dev
struct mlx5e_priv *priv = netdev_priv(dev);
struct mlx5e_rep_priv *rpriv = priv->ppriv;
struct mlx5_eswitch_rep *rep = rpriv->rep;
- struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
int err;
mutex_lock(&priv->state_lock);
@@ -619,8 +618,9 @@ static int mlx5e_rep_open(struct net_dev
if (err)
goto unlock;
- if (!mlx5_eswitch_set_vport_state(esw, rep->vport,
- MLX5_ESW_VPORT_ADMIN_STATE_UP))
+ if (!mlx5_modify_vport_admin_state(priv->mdev,
+ MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
+ rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_UP))
netif_carrier_on(dev);
unlock:
@@ -633,11 +633,12 @@ static int mlx5e_rep_close(struct net_de
struct mlx5e_priv *priv = netdev_priv(dev);
struct mlx5e_rep_priv *rpriv = priv->ppriv;
struct mlx5_eswitch_rep *rep = rpriv->rep;
- struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
int ret;
mutex_lock(&priv->state_lock);
- (void)mlx5_eswitch_set_vport_state(esw, rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
+ mlx5_modify_vport_admin_state(priv->mdev,
+ MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
+ rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
ret = mlx5e_close_locked(dev);
mutex_unlock(&priv->state_lock);
return ret;
Patches currently in stable-queue which might be from jianbol(a)mellanox.com are
queue-4.15/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.15/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/ipv6: Fix route leaking between VRFs
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-ipv6-fix-route-leaking-between-vrfs.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: David Ahern <dsahern(a)gmail.com>
Date: Thu, 29 Mar 2018 17:44:57 -0700
Subject: net/ipv6: Fix route leaking between VRFs
From: David Ahern <dsahern(a)gmail.com>
[ Upstream commit b6cdbc85234b072340b8923e69f49ec293f905dc ]
Donald reported that IPv6 route leaking between VRFs is not working.
The root cause is the strict argument in the call to rt6_lookup when
validating the nexthop spec.
ip6_route_check_nh validates the gateway and device (if given) of a
route spec. It in turn could call rt6_lookup (e.g., lookup in a given
table did not succeed so it falls back to a full lookup) and if so
sets the strict argument to 1. That means if the egress device is given,
the route lookup needs to return a result with the same device. This
strict requirement does not work with VRFs (IPv4 or IPv6) because the
oif in the flow struct is overridden with the index of the VRF device
to trigger a match on the l3mdev rule and force the lookup to its table.
The right long term solution is to add an l3mdev index to the flow
struct such that the oif is not overridden. That solution will not
backport well, so this patch aims for a simpler solution to relax the
strict argument if the route spec device is an l3mdev slave. As done
in other places, use the FLOWI_FLAG_SKIP_NH_OIF to know that the
RT6_LOOKUP_F_IFACE flag needs to be removed.
Fixes: ca254490c8df ("net: Add VRF support to IPv6 stack")
Reported-by: Donald Sharp <sharpd(a)cumulusnetworks.com>
Signed-off-by: David Ahern <dsahern(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/route.c | 3 +++
1 file changed, 3 insertions(+)
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -922,6 +922,9 @@ static struct rt6_info *ip6_pol_route_lo
struct rt6_info *rt, *rt_cache;
struct fib6_node *fn;
+ if (fl6->flowi6_flags & FLOWI_FLAG_SKIP_NH_OIF)
+ flags &= ~RT6_LOOKUP_F_IFACE;
+
rcu_read_lock();
fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr);
restart:
Patches currently in stable-queue which might be from dsahern(a)gmail.com are
queue-4.15/perf-evsel-fix-swap-for-samples-with-raw-data.patch
queue-4.15/perf-tools-fix-copyfile_offset-update-of-output-offset.patch
queue-4.15/net-ipv6-fix-route-leaking-between-vrfs.patch
queue-4.15/vrf-fix-use-after-free-and-double-free-in-vrf_finish_output.patch
This is a note to let you know that I've just added the patch titled
net/mlx4_core: Fix memory leak while delete slave's resources
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx4_core-fix-memory-leak-while-delete-slave-s-resources.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Moshe Shemesh <moshe(a)mellanox.com>
Date: Tue, 27 Mar 2018 14:41:19 +0300
Subject: net/mlx4_core: Fix memory leak while delete slave's resources
From: Moshe Shemesh <moshe(a)mellanox.com>
[ Upstream commit 461d5f1b59490ce0096dfda45e10038c122a7892 ]
mlx4_delete_all_resources_for_slave in resource tracker should free all
memory allocated for a slave.
While releasing memory of fs_rule, it misses releasing memory of
fs_rule->mirr_mbox.
Fixes: 78efed275117 ('net/mlx4_core: Support mirroring VF DMFS rules on both ports')
Signed-off-by: Moshe Shemesh <moshe(a)mellanox.com>
Signed-off-by: Tariq Toukan <tariqt(a)mellanox.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
+++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
@@ -5088,6 +5088,7 @@ static void rem_slave_fs_rule(struct mlx
&tracker->res_tree[RES_FS_RULE]);
list_del(&fs_rule->com.list);
spin_unlock_irq(mlx4_tlock(dev));
+ kfree(fs_rule->mirr_mbox);
kfree(fs_rule);
state = 0;
break;
Patches currently in stable-queue which might be from moshe(a)mellanox.com are
queue-4.15/net-mlx4_core-fix-memory-leak-while-delete-slave-s-resources.patch
queue-4.15/net-mlx5e-verify-coalescing-parameters-in-range.patch
This is a note to let you know that I've just added the patch titled
net/ipv6: Increment OUTxxx counters after netfilter hook
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-ipv6-increment-outxxx-counters-after-netfilter-hook.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Jeff Barnhill <0xeffeff(a)gmail.com>
Date: Thu, 5 Apr 2018 21:29:47 +0000
Subject: net/ipv6: Increment OUTxxx counters after netfilter hook
From: Jeff Barnhill <0xeffeff(a)gmail.com>
[ Upstream commit 71a1c915238c970cd9bdd5bf158b1279d6b6d55b ]
At the end of ip6_forward(), IPSTATS_MIB_OUTFORWDATAGRAMS and
IPSTATS_MIB_OUTOCTETS are incremented immediately before the NF_HOOK call
for NFPROTO_IPV6 / NF_INET_FORWARD. As a result, these counters get
incremented regardless of whether or not the netfilter hook allows the
packet to continue being processed. This change increments the counters
in ip6_forward_finish() so that it will not happen if the netfilter hook
chooses to terminate the packet, which is similar to how IPv4 works.
Signed-off-by: Jeff Barnhill <0xeffeff(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_output.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -375,6 +375,11 @@ static int ip6_forward_proxy_check(struc
static inline int ip6_forward_finish(struct net *net, struct sock *sk,
struct sk_buff *skb)
{
+ struct dst_entry *dst = skb_dst(skb);
+
+ __IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS);
+ __IP6_ADD_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTOCTETS, skb->len);
+
return dst_output(net, sk, skb);
}
@@ -568,8 +573,6 @@ int ip6_forward(struct sk_buff *skb)
hdr->hop_limit--;
- __IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS);
- __IP6_ADD_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTOCTETS, skb->len);
return NF_HOOK(NFPROTO_IPV6, NF_INET_FORWARD,
net, NULL, skb, skb->dev, dst->dev,
ip6_forward_finish);
Patches currently in stable-queue which might be from 0xeffeff(a)gmail.com are
queue-4.15/net-ipv6-increment-outxxx-counters-after-netfilter-hook.patch
This is a note to let you know that I've just added the patch titled
net: fool proof dev_valid_name()
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-fool-proof-dev_valid_name.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:26 -0700
Subject: net: fool proof dev_valid_name()
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit a9d48205d0aedda021fc3728972a9e9934c2b9de ]
We want to use dev_valid_name() to validate tunnel names,
so better use strnlen(name, IFNAMSIZ) than strlen(name) to make
sure to not upset KASAN.
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1027,7 +1027,7 @@ bool dev_valid_name(const char *name)
{
if (*name == '\0')
return false;
- if (strlen(name) >= IFNAMSIZ)
+ if (strnlen(name, IFNAMSIZ) == IFNAMSIZ)
return false;
if (!strcmp(name, ".") || !strcmp(name, ".."))
return false;
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
net: fix possible out-of-bound read in skb_network_protocol()
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Mon, 26 Mar 2018 08:08:07 -0700
Subject: net: fix possible out-of-bound read in skb_network_protocol()
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 1dfe82ebd7d8fd43dba9948fdfb31f145014baa0 ]
skb mac header is not necessarily set at the time skb_network_protocol()
is called. Use skb->data instead.
BUG: KASAN: slab-out-of-bounds in skb_network_protocol+0x46b/0x4b0 net/core/dev.c:2739
Read of size 2 at addr ffff8801b3097a0b by task syz-executor5/14242
CPU: 1 PID: 14242 Comm: syz-executor5 Not tainted 4.16.0-rc6+ #280
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x194/0x24d lib/dump_stack.c:53
print_address_description+0x73/0x250 mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report+0x23c/0x360 mm/kasan/report.c:412
__asan_report_load_n_noabort+0xf/0x20 mm/kasan/report.c:443
skb_network_protocol+0x46b/0x4b0 net/core/dev.c:2739
harmonize_features net/core/dev.c:2924 [inline]
netif_skb_features+0x509/0x9b0 net/core/dev.c:3011
validate_xmit_skb+0x81/0xb00 net/core/dev.c:3084
validate_xmit_skb_list+0xbf/0x120 net/core/dev.c:3142
packet_direct_xmit+0x117/0x790 net/packet/af_packet.c:256
packet_snd net/packet/af_packet.c:2944 [inline]
packet_sendmsg+0x3aed/0x60b0 net/packet/af_packet.c:2969
sock_sendmsg_nosec net/socket.c:629 [inline]
sock_sendmsg+0xca/0x110 net/socket.c:639
___sys_sendmsg+0x767/0x8b0 net/socket.c:2047
__sys_sendmsg+0xe5/0x210 net/socket.c:2081
Fixes: 19acc327258a ("gso: Handle Trans-Ether-Bridging protocol in skb_network_protocol()")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Pravin B Shelar <pshelar(a)ovn.org>
Reported-by: Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2719,7 +2719,7 @@ __be16 skb_network_protocol(struct sk_bu
if (unlikely(!pskb_may_pull(skb, sizeof(struct ethhdr))))
return 0;
- eth = (struct ethhdr *)skb_mac_header(skb);
+ eth = (struct ethhdr *)skb->data;
type = eth->h_proto;
}
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
net: dsa: Discard frames from unused ports
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-dsa-discard-frames-from-unused-ports.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Andrew Lunn <andrew(a)lunn.ch>
Date: Sat, 7 Apr 2018 20:37:40 +0200
Subject: net: dsa: Discard frames from unused ports
From: Andrew Lunn <andrew(a)lunn.ch>
[ Upstream commit fc5f33768cca7144f8d793205b229d46740d183b ]
The Marvell switches under some conditions will pass a frame to the
host with the port being the CPU port. Such frames are invalid, and
should be dropped. Not dropping them can result in a crash when
incrementing the receive statistics for an invalid port.
Reported-by: Chris Healy <cphealy(a)gmail.com>
Fixes: 91da11f870f0 ("net: Distributed Switch Architecture protocol support")
Signed-off-by: Andrew Lunn <andrew(a)lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/dsa/dsa_priv.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/net/dsa/dsa_priv.h
+++ b/net/dsa/dsa_priv.h
@@ -117,6 +117,7 @@ static inline struct net_device *dsa_mas
struct dsa_port *cpu_dp = dev->dsa_ptr;
struct dsa_switch_tree *dst = cpu_dp->dst;
struct dsa_switch *ds;
+ struct dsa_port *slave_port;
if (device < 0 || device >= DSA_MAX_SWITCHES)
return NULL;
@@ -128,7 +129,12 @@ static inline struct net_device *dsa_mas
if (port < 0 || port >= ds->num_ports)
return NULL;
- return ds->ports[port].slave;
+ slave_port = &ds->ports[port];
+
+ if (unlikely(slave_port->type != DSA_PORT_TYPE_USER))
+ return NULL;
+
+ return slave_port->slave;
}
/* port.c */
Patches currently in stable-queue which might be from andrew(a)lunn.ch are
queue-4.15/net-dsa-discard-frames-from-unused-ports.patch
This is a note to let you know that I've just added the patch titled
lan78xx: Crash in lan78xx_writ_reg (Workqueue: events lan78xx_deferred_multicast_write)
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
lan78xx-crash-in-lan78xx_writ_reg-workqueue-events-lan78xx_deferred_multicast_write.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Raghuram Chary J <raghuramchary.jallipalli(a)microchip.com>
Date: Tue, 27 Mar 2018 14:51:16 +0530
Subject: lan78xx: Crash in lan78xx_writ_reg (Workqueue: events lan78xx_deferred_multicast_write)
From: Raghuram Chary J <raghuramchary.jallipalli(a)microchip.com>
[ Upstream commit 2d2d99ec13f62d5d2cecb6169dfdb6bbe05356d0 ]
Description:
Crash was reported with syzkaller pointing to lan78xx_write_reg routine.
Root-cause:
Proper cleanup of workqueues and init/setup routines was not happening
in failure conditions.
Fix:
Handled the error conditions by cleaning up the queues and init/setup
routines.
Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
Reported-by: Andrey Konovalov <andreyknvl(a)google.com>
Signed-off-by: Raghuram Chary J <raghuramchary.jallipalli(a)microchip.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/usb/lan78xx.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2863,8 +2863,7 @@ static int lan78xx_bind(struct lan78xx_n
if (ret < 0) {
netdev_warn(dev->net,
"lan78xx_setup_irq_domain() failed : %d", ret);
- kfree(pdata);
- return ret;
+ goto out1;
}
dev->net->hard_header_len += TX_OVERHEAD;
@@ -2872,14 +2871,32 @@ static int lan78xx_bind(struct lan78xx_n
/* Init all registers */
ret = lan78xx_reset(dev);
+ if (ret) {
+ netdev_warn(dev->net, "Registers INIT FAILED....");
+ goto out2;
+ }
ret = lan78xx_mdio_init(dev);
+ if (ret) {
+ netdev_warn(dev->net, "MDIO INIT FAILED.....");
+ goto out2;
+ }
dev->net->flags |= IFF_MULTICAST;
pdata->wol = WAKE_MAGIC;
return ret;
+
+out2:
+ lan78xx_remove_irq_domain(dev);
+
+out1:
+ netdev_warn(dev->net, "Bind routine FAILED");
+ cancel_work_sync(&pdata->set_multicast);
+ cancel_work_sync(&pdata->set_vlan);
+ kfree(pdata);
+ return ret;
}
static void lan78xx_unbind(struct lan78xx_net *dev, struct usb_interface *intf)
@@ -2891,6 +2908,8 @@ static void lan78xx_unbind(struct lan78x
lan78xx_remove_mdio(dev);
if (pdata) {
+ cancel_work_sync(&pdata->set_multicast);
+ cancel_work_sync(&pdata->set_vlan);
netif_dbg(dev, ifdown, dev->net, "free pdata");
kfree(pdata);
pdata = NULL;
Patches currently in stable-queue which might be from raghuramchary.jallipalli(a)microchip.com are
queue-4.15/lan78xx-crash-in-lan78xx_writ_reg-workqueue-events-lan78xx_deferred_multicast_write.patch
This is a note to let you know that I've just added the patch titled
ipv6: the entire IPv6 header chain must fit the first fragment
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Paolo Abeni <pabeni(a)redhat.com>
Date: Fri, 23 Mar 2018 14:47:30 +0100
Subject: ipv6: the entire IPv6 header chain must fit the first fragment
From: Paolo Abeni <pabeni(a)redhat.com>
[ Upstream commit 10b8a3de603df7b96004179b1b33b1708c76d144 ]
While building ipv6 datagram we currently allow arbitrary large
extheaders, even beyond pmtu size. The syzbot has found a way
to exploit the above to trigger the following splat:
kernel BUG at ./include/linux/skbuff.h:2073!
invalid opcode: 0000 [#1] SMP KASAN
Dumping ftrace buffer:
(ftrace buffer empty)
Modules linked in:
CPU: 1 PID: 4230 Comm: syzkaller672661 Not tainted 4.16.0-rc2+ #326
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
RIP: 0010:__skb_pull include/linux/skbuff.h:2073 [inline]
RIP: 0010:__ip6_make_skb+0x1ac8/0x2190 net/ipv6/ip6_output.c:1636
RSP: 0018:ffff8801bc18f0f0 EFLAGS: 00010293
RAX: ffff8801b17400c0 RBX: 0000000000000738 RCX: ffffffff84f01828
RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff8801b415ac18
RBP: ffff8801bc18f360 R08: ffff8801b4576844 R09: 0000000000000000
R10: ffff8801bc18f380 R11: ffffed00367aee4e R12: 00000000000000d6
R13: ffff8801b415a740 R14: dffffc0000000000 R15: ffff8801b45767c0
FS: 0000000001535880(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000002000b000 CR3: 00000001b4123001 CR4: 00000000001606e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
ip6_finish_skb include/net/ipv6.h:969 [inline]
udp_v6_push_pending_frames+0x269/0x3b0 net/ipv6/udp.c:1073
udpv6_sendmsg+0x2a96/0x3400 net/ipv6/udp.c:1343
inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:764
sock_sendmsg_nosec net/socket.c:630 [inline]
sock_sendmsg+0xca/0x110 net/socket.c:640
___sys_sendmsg+0x320/0x8b0 net/socket.c:2046
__sys_sendmmsg+0x1ee/0x620 net/socket.c:2136
SYSC_sendmmsg net/socket.c:2167 [inline]
SyS_sendmmsg+0x35/0x60 net/socket.c:2162
do_syscall_64+0x280/0x940 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
RIP: 0033:0x4404c9
RSP: 002b:00007ffdce35f948 EFLAGS: 00000217 ORIG_RAX: 0000000000000133
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004404c9
RDX: 0000000000000003 RSI: 0000000020001f00 RDI: 0000000000000003
RBP: 00000000006cb018 R08: 00000000004002c8 R09: 00000000004002c8
R10: 0000000020000080 R11: 0000000000000217 R12: 0000000000401df0
R13: 0000000000401e80 R14: 0000000000000000 R15: 0000000000000000
Code: ff e8 1d 5e b9 fc e9 15 e9 ff ff e8 13 5e b9 fc e9 44 e8 ff ff e8 29
5e b9 fc e9 c0 e6 ff ff e8 3f f3 80 fc 0f 0b e8 38 f3 80 fc <0f> 0b 49 8d
87 80 00 00 00 4d 8d 87 84 00 00 00 48 89 85 20 fe
RIP: __skb_pull include/linux/skbuff.h:2073 [inline] RSP: ffff8801bc18f0f0
RIP: __ip6_make_skb+0x1ac8/0x2190 net/ipv6/ip6_output.c:1636 RSP:
ffff8801bc18f0f0
As stated by RFC 7112 section 5:
When a host fragments an IPv6 datagram, it MUST include the entire
IPv6 Header Chain in the First Fragment.
So this patch addresses the issue dropping datagrams with excessive
extheader length. It also updates the error path to report to the
calling socket nonnegative pmtu values.
The issue apparently predates git history.
v1 -> v2: cleanup error path, as per Eric's suggestion
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: syzbot+91e6f9932ff122fa4410(a)syzkaller.appspotmail.com
Signed-off-by: Paolo Abeni <pabeni(a)redhat.com>
Reviewed-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_output.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1245,7 +1245,7 @@ static int __ip6_append_data(struct sock
const struct sockcm_cookie *sockc)
{
struct sk_buff *skb, *skb_prev = NULL;
- unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu;
+ unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
int exthdrlen = 0;
int dst_exthdrlen = 0;
int hh_len;
@@ -1281,6 +1281,12 @@ static int __ip6_append_data(struct sock
sizeof(struct frag_hdr) : 0) +
rt->rt6i_nfheader_len;
+ /* as per RFC 7112 section 5, the entire IPv6 Header Chain must fit
+ * the first fragment
+ */
+ if (headersize + transhdrlen > mtu)
+ goto emsgsize;
+
if (cork->length + length > mtu - headersize && ipc6->dontfrag &&
(sk->sk_protocol == IPPROTO_UDP ||
sk->sk_protocol == IPPROTO_RAW)) {
@@ -1296,9 +1302,8 @@ static int __ip6_append_data(struct sock
if (cork->length + length > maxnonfragsize - headersize) {
emsgsize:
- ipv6_local_error(sk, EMSGSIZE, fl6,
- mtu - headersize +
- sizeof(struct ipv6hdr));
+ pmtu = max_t(int, mtu - headersize + sizeof(struct ipv6hdr), 0);
+ ipv6_local_error(sk, EMSGSIZE, fl6, pmtu);
return -EMSGSIZE;
}
Patches currently in stable-queue which might be from pabeni(a)redhat.com are
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
This is a note to let you know that I've just added the patch titled
ipv6: sr: fix seg6 encap performances with TSO enabled
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ipv6-sr-fix-seg6-encap-performances-with-tso-enabled.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: David Lebrun <dlebrun(a)google.com>
Date: Thu, 29 Mar 2018 17:59:36 +0100
Subject: ipv6: sr: fix seg6 encap performances with TSO enabled
From: David Lebrun <dlebrun(a)google.com>
[ Upstream commit 5807b22c9164a21cd1077a9bc587f0bba361f72d ]
Enabling TSO can lead to abysmal performances when using seg6 in
encap mode, such as with the ixgbe driver. This patch adds a call to
iptunnel_handle_offloads() to remove the encapsulation bit if needed.
Before:
root@comp4-seg6bpf:~# iperf3 -c fc00::55
Connecting to host fc00::55, port 5201
[ 4] local fc45::4 port 36592 connected to fc00::55 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 196 KBytes 1.60 Mbits/sec 47 6.66 KBytes
[ 4] 1.00-2.00 sec 304 KBytes 2.49 Mbits/sec 100 5.33 KBytes
[ 4] 2.00-3.00 sec 284 KBytes 2.32 Mbits/sec 92 5.33 KBytes
After:
root@comp4-seg6bpf:~# iperf3 -c fc00::55
Connecting to host fc00::55, port 5201
[ 4] local fc45::4 port 43062 connected to fc00::55 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.03 GBytes 8.89 Gbits/sec 0 743 KBytes
[ 4] 1.00-2.00 sec 1.03 GBytes 8.87 Gbits/sec 0 743 KBytes
[ 4] 2.00-3.00 sec 1.03 GBytes 8.87 Gbits/sec 0 743 KBytes
Reported-by: Tom Herbert <tom(a)quantonium.net>
Fixes: 6c8702c60b88 ("ipv6: sr: add support for SRH encapsulation and injection with lwtunnels")
Signed-off-by: David Lebrun <dlebrun(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/seg6_iptunnel.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
--- a/net/ipv6/seg6_iptunnel.c
+++ b/net/ipv6/seg6_iptunnel.c
@@ -16,6 +16,7 @@
#include <linux/net.h>
#include <linux/module.h>
#include <net/ip.h>
+#include <net/ip_tunnels.h>
#include <net/lwtunnel.h>
#include <net/netevent.h>
#include <net/netns/generic.h>
@@ -211,11 +212,6 @@ static int seg6_do_srh(struct sk_buff *s
tinfo = seg6_encap_lwtunnel(dst->lwtstate);
- if (likely(!skb->encapsulation)) {
- skb_reset_inner_headers(skb);
- skb->encapsulation = 1;
- }
-
switch (tinfo->mode) {
case SEG6_IPTUN_MODE_INLINE:
if (skb->protocol != htons(ETH_P_IPV6))
@@ -224,10 +220,12 @@ static int seg6_do_srh(struct sk_buff *s
err = seg6_do_srh_inline(skb, tinfo->srh);
if (err)
return err;
-
- skb_reset_inner_headers(skb);
break;
case SEG6_IPTUN_MODE_ENCAP:
+ err = iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6);
+ if (err)
+ return err;
+
if (skb->protocol == htons(ETH_P_IPV6))
proto = IPPROTO_IPV6;
else if (skb->protocol == htons(ETH_P_IP))
@@ -239,6 +237,8 @@ static int seg6_do_srh(struct sk_buff *s
if (err)
return err;
+ skb_set_inner_transport_header(skb, skb_transport_offset(skb));
+ skb_set_inner_protocol(skb, skb->protocol);
skb->protocol = htons(ETH_P_IPV6);
break;
case SEG6_IPTUN_MODE_L2ENCAP:
@@ -262,8 +262,6 @@ static int seg6_do_srh(struct sk_buff *s
ipv6_hdr(skb)->payload_len = htons(skb->len - sizeof(struct ipv6hdr));
skb_set_transport_header(skb, sizeof(struct ipv6hdr));
- skb_set_inner_protocol(skb, skb->protocol);
-
return 0;
}
Patches currently in stable-queue which might be from dlebrun(a)google.com are
queue-4.15/ipv6-sr-fix-seg6-encap-performances-with-tso-enabled.patch
This is a note to let you know that I've just added the patch titled
ipv6: sit: better validate user provided tunnel names
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ipv6-sit-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:28 -0700
Subject: ipv6: sit: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit b95211e066fc3494b7c115060b2297b4ba21f025 ]
Use dev_valid_name() to make sure user does not provide illegal
device name.
syzbot caught the following bug :
BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
BUG: KASAN: stack-out-of-bounds in ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
Write of size 33 at addr ffff8801b64076d8 by task syzkaller932654/4453
CPU: 0 PID: 4453 Comm: syzkaller932654 Not tainted 4.16.0+ #1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b9/0x29f lib/dump_stack.c:53
print_address_description+0x6c/0x20b mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
memcpy+0x37/0x50 mm/kasan/kasan.c:303
strlcpy include/linux/string.h:300 [inline]
ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
ipip6_tunnel_ioctl+0xe71/0x241b net/ipv6/sit.c:1221
dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
sock_ioctl+0x47e/0x680 net/socket.c:1015
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:500 [inline]
do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
SYSC_ioctl fs/ioctl.c:708 [inline]
SyS_ioctl+0x24/0x30 fs/ioctl.c:706
do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/sit.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -250,11 +250,13 @@ static struct ip_tunnel *ipip6_tunnel_lo
if (!create)
goto failed;
- if (parms->name[0])
+ if (parms->name[0]) {
+ if (!dev_valid_name(parms->name))
+ goto failed;
strlcpy(name, parms->name, IFNAMSIZ);
- else
+ } else {
strcpy(name, "sit%d");
-
+ }
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
ipip6_tunnel_setup);
if (!dev)
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
ip_tunnel: better validate user provided tunnel names
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ip_tunnel-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:27 -0700
Subject: ip_tunnel: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 9cb726a212a82c88c98aa9f0037fd04777cd8fe5 ]
Use dev_valid_name() to make sure user does not provide illegal
device name.
syzbot caught the following bug :
BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
BUG: KASAN: stack-out-of-bounds in __ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
Write of size 20 at addr ffff8801ac79f810 by task syzkaller268107/4482
CPU: 0 PID: 4482 Comm: syzkaller268107 Not tainted 4.16.0+ #1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b9/0x29f lib/dump_stack.c:53
print_address_description+0x6c/0x20b mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
memcpy+0x37/0x50 mm/kasan/kasan.c:303
strlcpy include/linux/string.h:300 [inline]
__ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
ip_tunnel_create net/ipv4/ip_tunnel.c:352 [inline]
ip_tunnel_ioctl+0x818/0xd40 net/ipv4/ip_tunnel.c:861
ipip_tunnel_ioctl+0x1c5/0x420 net/ipv4/ipip.c:350
dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
sock_ioctl+0x47e/0x680 net/socket.c:1015
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:500 [inline]
do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
SYSC_ioctl fs/ioctl.c:708 [inline]
SyS_ioctl+0x24/0x30 fs/ioctl.c:706
do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv4/ip_tunnel.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
--- a/net/ipv4/ip_tunnel.c
+++ b/net/ipv4/ip_tunnel.c
@@ -253,13 +253,14 @@ static struct net_device *__ip_tunnel_cr
struct net_device *dev;
char name[IFNAMSIZ];
- if (parms->name[0])
+ err = -E2BIG;
+ if (parms->name[0]) {
+ if (!dev_valid_name(parms->name))
+ goto failed;
strlcpy(name, parms->name, IFNAMSIZ);
- else {
- if (strlen(ops->kind) > (IFNAMSIZ - 3)) {
- err = -E2BIG;
+ } else {
+ if (strlen(ops->kind) > (IFNAMSIZ - 3))
goto failed;
- }
strlcpy(name, ops->kind, IFNAMSIZ);
strncat(name, "%d", 2);
}
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
ip6_tunnel: better validate user provided tunnel names
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ip6_tunnel-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:30 -0700
Subject: ip6_tunnel: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit db7a65e3ab78e5b1c4b17c0870ebee35a4ee3257 ]
Use valid_name() to make sure user does not provide illegal
device name.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_tunnel.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -297,13 +297,16 @@ static struct ip6_tnl *ip6_tnl_create(st
struct net_device *dev;
struct ip6_tnl *t;
char name[IFNAMSIZ];
- int err = -ENOMEM;
+ int err = -E2BIG;
- if (p->name[0])
+ if (p->name[0]) {
+ if (!dev_valid_name(p->name))
+ goto failed;
strlcpy(name, p->name, IFNAMSIZ);
- else
+ } else {
sprintf(name, "ip6tnl%%d");
-
+ }
+ err = -ENOMEM;
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
ip6_tnl_dev_setup);
if (!dev)
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
ip6_gre: better validate user provided tunnel names
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ip6_gre-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:29 -0700
Subject: ip6_gre: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 5f42df013b8bc1b6511af7a04bf93b014884ae2a ]
Use dev_valid_name() to make sure user does not provide illegal
device name.
syzbot caught the following bug :
BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
BUG: KASAN: stack-out-of-bounds in ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
Write of size 20 at addr ffff8801afb9f7b8 by task syzkaller851048/4466
CPU: 1 PID: 4466 Comm: syzkaller851048 Not tainted 4.16.0+ #1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b9/0x29f lib/dump_stack.c:53
print_address_description+0x6c/0x20b mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
memcpy+0x37/0x50 mm/kasan/kasan.c:303
strlcpy include/linux/string.h:300 [inline]
ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
ip6gre_tunnel_ioctl+0x69d/0x12e0 net/ipv6/ip6_gre.c:1195
dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
sock_ioctl+0x47e/0x680 net/socket.c:1015
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:500 [inline]
do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
SYSC_ioctl fs/ioctl.c:708 [inline]
SyS_ioctl+0x24/0x30 fs/ioctl.c:706
do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_gre.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -319,11 +319,13 @@ static struct ip6_tnl *ip6gre_tunnel_loc
if (t || !create)
return t;
- if (parms->name[0])
+ if (parms->name[0]) {
+ if (!dev_valid_name(parms->name))
+ return NULL;
strlcpy(name, parms->name, IFNAMSIZ);
- else
+ } else {
strcpy(name, "ip6gre%d");
-
+ }
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
ip6gre_tunnel_setup);
if (!dev)
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.15/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.15/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.15/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.15/net-fool-proof-dev_valid_name.patch
queue-4.15/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.15/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.15/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.15/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.15/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.15/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.15/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
bonding: move dev_mc_sync after master_upper_dev_link in bond_enslave
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Mon, 26 Mar 2018 01:16:46 +0800
Subject: bonding: move dev_mc_sync after master_upper_dev_link in bond_enslave
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit ae42cc62a9f07f1f6979054ed92606b9c30f4a2e ]
Beniamino found a crash when adding vlan as slave of bond which is also
the parent link:
ip link add bond1 type bond
ip link set bond1 up
ip link add link bond1 vlan1 type vlan id 80
ip link set vlan1 master bond1
The call trace is as below:
[<ffffffffa850842a>] queued_spin_lock_slowpath+0xb/0xf
[<ffffffffa8515680>] _raw_spin_lock+0x20/0x30
[<ffffffffa83f6f07>] dev_mc_sync+0x37/0x80
[<ffffffffc08687dc>] vlan_dev_set_rx_mode+0x1c/0x30 [8021q]
[<ffffffffa83efd2a>] __dev_set_rx_mode+0x5a/0xa0
[<ffffffffa83f7138>] dev_mc_sync_multiple+0x78/0x80
[<ffffffffc084127c>] bond_enslave+0x67c/0x1190 [bonding]
[<ffffffffa8401909>] do_setlink+0x9c9/0xe50
[<ffffffffa8403bf2>] rtnl_newlink+0x522/0x880
[<ffffffffa8403ff7>] rtnetlink_rcv_msg+0xa7/0x260
[<ffffffffa8424ecb>] netlink_rcv_skb+0xab/0xc0
[<ffffffffa83fe498>] rtnetlink_rcv+0x28/0x30
[<ffffffffa8424850>] netlink_unicast+0x170/0x210
[<ffffffffa8424bf8>] netlink_sendmsg+0x308/0x420
[<ffffffffa83cc396>] sock_sendmsg+0xb6/0xf0
This is actually a dead lock caused by sync slave hwaddr from master when
the master is the slave's 'slave'. This dead loop check is actually done
by netdev_master_upper_dev_link. However, Commit 1f718f0f4f97 ("bonding:
populate neighbour's private on enslave") moved it after dev_mc_sync.
This patch is to fix it by moving dev_mc_sync after master_upper_dev_link,
so that this loop check would be earlier than dev_mc_sync. It also moves
if (mode == BOND_MODE_8023AD) into if (!bond_uses_primary) clause as an
improvement.
Note team driver also has this issue, I will fix it in another patch.
Fixes: 1f718f0f4f97 ("bonding: populate neighbour's private on enslave")
Reported-by: Beniamino Galvani <bgalvani(a)redhat.com>
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Acked-by: Andy Gospodarek <andy(a)greyhouse.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/bonding/bond_main.c | 73 +++++++++++++++++++---------------------
1 file changed, 35 insertions(+), 38 deletions(-)
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1528,44 +1528,11 @@ int bond_enslave(struct net_device *bond
goto err_close;
}
- /* If the mode uses primary, then the following is handled by
- * bond_change_active_slave().
- */
- if (!bond_uses_primary(bond)) {
- /* set promiscuity level to new slave */
- if (bond_dev->flags & IFF_PROMISC) {
- res = dev_set_promiscuity(slave_dev, 1);
- if (res)
- goto err_close;
- }
-
- /* set allmulti level to new slave */
- if (bond_dev->flags & IFF_ALLMULTI) {
- res = dev_set_allmulti(slave_dev, 1);
- if (res)
- goto err_close;
- }
-
- netif_addr_lock_bh(bond_dev);
-
- dev_mc_sync_multiple(slave_dev, bond_dev);
- dev_uc_sync_multiple(slave_dev, bond_dev);
-
- netif_addr_unlock_bh(bond_dev);
- }
-
- if (BOND_MODE(bond) == BOND_MODE_8023AD) {
- /* add lacpdu mc addr to mc list */
- u8 lacpdu_multicast[ETH_ALEN] = MULTICAST_LACPDU_ADDR;
-
- dev_mc_add(slave_dev, lacpdu_multicast);
- }
-
res = vlan_vids_add_by_dev(slave_dev, bond_dev);
if (res) {
netdev_err(bond_dev, "Couldn't add bond vlan ids to %s\n",
slave_dev->name);
- goto err_hwaddr_unsync;
+ goto err_close;
}
prev_slave = bond_last_slave(bond);
@@ -1725,6 +1692,37 @@ int bond_enslave(struct net_device *bond
goto err_upper_unlink;
}
+ /* If the mode uses primary, then the following is handled by
+ * bond_change_active_slave().
+ */
+ if (!bond_uses_primary(bond)) {
+ /* set promiscuity level to new slave */
+ if (bond_dev->flags & IFF_PROMISC) {
+ res = dev_set_promiscuity(slave_dev, 1);
+ if (res)
+ goto err_sysfs_del;
+ }
+
+ /* set allmulti level to new slave */
+ if (bond_dev->flags & IFF_ALLMULTI) {
+ res = dev_set_allmulti(slave_dev, 1);
+ if (res)
+ goto err_sysfs_del;
+ }
+
+ netif_addr_lock_bh(bond_dev);
+ dev_mc_sync_multiple(slave_dev, bond_dev);
+ dev_uc_sync_multiple(slave_dev, bond_dev);
+ netif_addr_unlock_bh(bond_dev);
+
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
+ /* add lacpdu mc addr to mc list */
+ u8 lacpdu_multicast[ETH_ALEN] = MULTICAST_LACPDU_ADDR;
+
+ dev_mc_add(slave_dev, lacpdu_multicast);
+ }
+ }
+
bond->slave_cnt++;
bond_compute_features(bond);
bond_set_carrier(bond);
@@ -1748,6 +1746,9 @@ int bond_enslave(struct net_device *bond
return 0;
/* Undo stages on error */
+err_sysfs_del:
+ bond_sysfs_slave_del(new_slave);
+
err_upper_unlink:
bond_upper_dev_unlink(bond, new_slave);
@@ -1768,10 +1769,6 @@ err_detach:
synchronize_rcu();
slave_disable_netpoll(new_slave);
-err_hwaddr_unsync:
- if (!bond_uses_primary(bond))
- bond_hw_addr_flush(bond_dev, slave_dev);
-
err_close:
slave_dev->priv_flags &= ~IFF_BONDING;
dev_close(slave_dev);
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.15/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.15/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.15/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.15/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.15/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
bonding: process the err returned by dev_set_allmulti properly in bond_enslave
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Mon, 26 Mar 2018 01:16:47 +0800
Subject: bonding: process the err returned by dev_set_allmulti properly in bond_enslave
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit 9f5a90c107741b864398f4ac0014711a8c1d8474 ]
When dev_set_promiscuity(1) succeeds but dev_set_allmulti(1) fails,
dev_set_promiscuity(-1) should be done before going to the err path.
Otherwise, dev->promiscuity will leak.
Fixes: 7e1a1ac1fbaa ("bonding: Check return of dev_set_promiscuity/allmulti")
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Acked-by: Andy Gospodarek <andy(a)greyhouse.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/bonding/bond_main.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1706,8 +1706,11 @@ int bond_enslave(struct net_device *bond
/* set allmulti level to new slave */
if (bond_dev->flags & IFF_ALLMULTI) {
res = dev_set_allmulti(slave_dev, 1);
- if (res)
+ if (res) {
+ if (bond_dev->flags & IFF_PROMISC)
+ dev_set_promiscuity(slave_dev, -1);
goto err_sysfs_del;
+ }
}
netif_addr_lock_bh(bond_dev);
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.15/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.15/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.15/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.15/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.15/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
arp: fix arp_filter on l3slave devices
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
arp-fix-arp_filter-on-l3slave-devices.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Miguel Fadon Perlines <mfadon(a)teldat.com>
Date: Thu, 5 Apr 2018 10:25:38 +0200
Subject: arp: fix arp_filter on l3slave devices
From: Miguel Fadon Perlines <mfadon(a)teldat.com>
[ Upstream commit 58b35f27689b5eb514fc293c332966c226b1b6e4 ]
arp_filter performs an ip_route_output search for arp source address and
checks if output device is the same where the arp request was received,
if it is not, the arp request is not answered.
This route lookup is always done on main route table so l3slave devices
never find the proper route and arp is not answered.
Passing l3mdev_master_ifindex_rcu(dev) return value as oif fixes the
lookup for l3slave devices while maintaining same behavior for non
l3slave devices as this function returns 0 in that case.
Fixes: 613d09b30f8b ("net: Use VRF device index for lookups on TX")
Signed-off-by: Miguel Fadon Perlines <mfadon(a)teldat.com>
Acked-by: David Ahern <dsa(a)cumulusnetworks.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv4/arp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -437,7 +437,7 @@ static int arp_filter(__be32 sip, __be32
/*unsigned long now; */
struct net *net = dev_net(dev);
- rt = ip_route_output(net, sip, tip, 0, 0);
+ rt = ip_route_output(net, sip, tip, 0, l3mdev_master_ifindex_rcu(dev));
if (IS_ERR(rt))
return 1;
if (rt->dst.dev != dev) {
Patches currently in stable-queue which might be from mfadon(a)teldat.com are
queue-4.15/arp-fix-arp_filter-on-l3slave-devices.patch
queue-4.15/vrf-fix-use-after-free-and-double-free-in-vrf_finish_output.patch
This is a note to let you know that I've just added the patch titled
bonding: fix the err path for dev hwaddr sync in bond_enslave
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:19:36 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Mon, 26 Mar 2018 01:16:45 +0800
Subject: bonding: fix the err path for dev hwaddr sync in bond_enslave
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit 5c78f6bfae2b10ff70e21d343e64584ea6280c26 ]
vlan_vids_add_by_dev is called right after dev hwaddr sync, so on
the err path it should unsync dev hwaddr. Otherwise, the slave
dev's hwaddr will never be unsync when this err happens.
Fixes: 1ff412ad7714 ("bonding: change the bond's vlan syncing functions with the standard ones")
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Reviewed-by: Nikolay Aleksandrov <nikolay(a)cumulusnetworks.com>
Acked-by: Andy Gospodarek <andy(a)greyhouse.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/bonding/bond_main.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1565,7 +1565,7 @@ int bond_enslave(struct net_device *bond
if (res) {
netdev_err(bond_dev, "Couldn't add bond vlan ids to %s\n",
slave_dev->name);
- goto err_close;
+ goto err_hwaddr_unsync;
}
prev_slave = bond_last_slave(bond);
@@ -1755,9 +1755,6 @@ err_unregister:
netdev_rx_handler_unregister(slave_dev);
err_detach:
- if (!bond_uses_primary(bond))
- bond_hw_addr_flush(bond_dev, slave_dev);
-
vlan_vids_del_by_dev(slave_dev, bond_dev);
if (rcu_access_pointer(bond->primary_slave) == new_slave)
RCU_INIT_POINTER(bond->primary_slave, NULL);
@@ -1771,6 +1768,10 @@ err_detach:
synchronize_rcu();
slave_disable_netpoll(new_slave);
+err_hwaddr_unsync:
+ if (!bond_uses_primary(bond))
+ bond_hw_addr_flush(bond_dev, slave_dev);
+
err_close:
slave_dev->priv_flags &= ~IFF_BONDING;
dev_close(slave_dev);
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.15/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.15/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.15/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.15/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.15/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
vti6: better validate user provided tunnel names
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vti6-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:31 -0700
Subject: vti6: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 537b361fbcbcc3cd6fe2bb47069fd292b9256d16 ]
Use valid_name() to make sure user does not provide illegal
device name.
Fixes: ed1efb2aefbb ("ipv6: Add support for IPsec virtual tunnel interfaces")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Steffen Klassert <steffen.klassert(a)secunet.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_vti.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
--- a/net/ipv6/ip6_vti.c
+++ b/net/ipv6/ip6_vti.c
@@ -212,10 +212,13 @@ static struct ip6_tnl *vti6_tnl_create(s
char name[IFNAMSIZ];
int err;
- if (p->name[0])
+ if (p->name[0]) {
+ if (!dev_valid_name(p->name))
+ goto failed;
strlcpy(name, p->name, IFNAMSIZ);
- else
+ } else {
sprintf(name, "ip6_vti%%d");
+ }
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN, vti6_dev_setup);
if (!dev)
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
vrf: Fix use after free and double free in vrf_finish_output
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vrf-fix-use-after-free-and-double-free-in-vrf_finish_output.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: David Ahern <dsahern(a)gmail.com>
Date: Thu, 29 Mar 2018 12:49:52 -0700
Subject: vrf: Fix use after free and double free in vrf_finish_output
From: David Ahern <dsahern(a)gmail.com>
[ Upstream commit 82dd0d2a9a76fc8fa2b18d80b987d455728bf83a ]
Miguel reported an skb use after free / double free in vrf_finish_output
when neigh_output returns an error. The vrf driver should return after
the call to neigh_output as it takes over the skb on error path as well.
Patch is a simplified version of Miguel's patch which was written for 4.9,
and updated to top of tree.
Fixes: 8f58336d3f78a ("net: Add ethernet header for pass through VRF device")
Signed-off-by: Miguel Fadon Perlines <mfadon(a)teldat.com>
Signed-off-by: David Ahern <dsahern(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/vrf.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -579,12 +579,13 @@ static int vrf_finish_output(struct net
if (!IS_ERR(neigh)) {
sock_confirm_neigh(skb, neigh);
ret = neigh_output(neigh, skb);
+ rcu_read_unlock_bh();
+ return ret;
}
rcu_read_unlock_bh();
err:
- if (unlikely(ret < 0))
- vrf_tx_error(skb->dev, skb);
+ vrf_tx_error(skb->dev, skb);
return ret;
}
Patches currently in stable-queue which might be from dsahern(a)gmail.com are
queue-4.14/perf-tools-fix-copyfile_offset-update-of-output-offset.patch
queue-4.14/net-ipv6-fix-route-leaking-between-vrfs.patch
queue-4.14/vrf-fix-use-after-free-and-double-free-in-vrf_finish_output.patch
This is a note to let you know that I've just added the patch titled
vhost_net: add missing lock nesting notation
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vhost_net-add-missing-lock-nesting-notation.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Jason Wang <jasowang(a)redhat.com>
Date: Mon, 26 Mar 2018 16:10:23 +0800
Subject: vhost_net: add missing lock nesting notation
From: Jason Wang <jasowang(a)redhat.com>
[ Upstream commit aaa3149bbee9ba9b4e6f0bd6e3e7d191edeae942 ]
We try to hold TX virtqueue mutex in vhost_net_rx_peek_head_len()
after RX virtqueue mutex is held in handle_rx(). This requires an
appropriate lock nesting notation to calm down deadlock detector.
Fixes: 0308813724606 ("vhost_net: basic polling support")
Reported-by: syzbot+7f073540b1384a614e09(a)syzkaller.appspotmail.com
Signed-off-by: Jason Wang <jasowang(a)redhat.com>
Acked-by: Michael S. Tsirkin <mst(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/vhost/net.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -622,7 +622,7 @@ static int vhost_net_rx_peek_head_len(st
if (!len && vq->busyloop_timeout) {
/* Both tx vq and rx socket were polled here */
- mutex_lock(&vq->mutex);
+ mutex_lock_nested(&vq->mutex, 1);
vhost_disable_notify(&net->dev, vq);
preempt_disable();
@@ -755,7 +755,7 @@ static void handle_rx(struct vhost_net *
struct iov_iter fixup;
__virtio16 num_buffers;
- mutex_lock(&vq->mutex);
+ mutex_lock_nested(&vq->mutex, 0);
sock = vq->private_data;
if (!sock)
goto out;
Patches currently in stable-queue which might be from jasowang(a)redhat.com are
queue-4.14/vhost-validate-log-when-iotlb-is-enabled.patch
queue-4.14/vhost_net-add-missing-lock-nesting-notation.patch
queue-4.14/vhost-correctly-remove-wait-queue-during-poll-failure.patch
This is a note to let you know that I've just added the patch titled
vlan: also check phy_driver ts_info for vlan's real device
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vlan-also-check-phy_driver-ts_info-for-vlan-s-real-device.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Hangbin Liu <liuhangbin(a)gmail.com>
Date: Fri, 30 Mar 2018 09:44:00 +0800
Subject: vlan: also check phy_driver ts_info for vlan's real device
From: Hangbin Liu <liuhangbin(a)gmail.com>
[ Upstream commit ec1d8ccb07deaf30fd0508af6755364ac47dc08d ]
Just like function ethtool_get_ts_info(), we should also consider the
phy_driver ts_info call back. For example, driver dp83640.
Fixes: 37dd9255b2f6 ("vlan: Pass ethtool get_ts_info queries to real device.")
Acked-by: Richard Cochran <richardcochran(a)gmail.com>
Signed-off-by: Hangbin Liu <liuhangbin(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/8021q/vlan_dev.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -29,6 +29,7 @@
#include <linux/net_tstamp.h>
#include <linux/etherdevice.h>
#include <linux/ethtool.h>
+#include <linux/phy.h>
#include <net/arp.h>
#include <net/switchdev.h>
@@ -665,8 +666,11 @@ static int vlan_ethtool_get_ts_info(stru
{
const struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
const struct ethtool_ops *ops = vlan->real_dev->ethtool_ops;
+ struct phy_device *phydev = vlan->real_dev->phydev;
- if (ops->get_ts_info) {
+ if (phydev && phydev->drv && phydev->drv->ts_info) {
+ return phydev->drv->ts_info(phydev, info);
+ } else if (ops->get_ts_info) {
return ops->get_ts_info(vlan->real_dev, info);
} else {
info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE |
Patches currently in stable-queue which might be from liuhangbin(a)gmail.com are
queue-4.14/vlan-also-check-phy_driver-ts_info-for-vlan-s-real-device.patch
queue-4.14/l2tp-fix-missing-print-session-offset-info.patch
This is a note to let you know that I've just added the patch titled
vhost: validate log when IOTLB is enabled
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vhost-validate-log-when-iotlb-is-enabled.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Jason Wang <jasowang(a)redhat.com>
Date: Thu, 29 Mar 2018 16:00:04 +0800
Subject: vhost: validate log when IOTLB is enabled
From: Jason Wang <jasowang(a)redhat.com>
[ Upstream commit d65026c6c62e7d9616c8ceb5a53b68bcdc050525 ]
Vq log_base is the userspace address of bitmap which has nothing to do
with IOTLB. So it needs to be validated unconditionally otherwise we
may try use 0 as log_base which may lead to pin pages that will lead
unexpected result (e.g trigger BUG_ON() in set_bit_to_user()).
Fixes: 6b1e6cc7855b0 ("vhost: new device IOTLB API")
Reported-by: syzbot+6304bf97ef436580fede(a)syzkaller.appspotmail.com
Signed-off-by: Jason Wang <jasowang(a)redhat.com>
Acked-by: Michael S. Tsirkin <mst(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/vhost/vhost.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -1252,14 +1252,12 @@ static int vq_log_access_ok(struct vhost
/* Caller should have vq mutex and device mutex */
int vhost_vq_access_ok(struct vhost_virtqueue *vq)
{
- if (vq->iotlb) {
- /* When device IOTLB was used, the access validation
- * will be validated during prefetching.
- */
- return 1;
- }
- return vq_access_ok(vq, vq->num, vq->desc, vq->avail, vq->used) &&
- vq_log_access_ok(vq, vq->log_base);
+ int ret = vq_log_access_ok(vq, vq->log_base);
+
+ if (ret || vq->iotlb)
+ return ret;
+
+ return vq_access_ok(vq, vq->num, vq->desc, vq->avail, vq->used);
}
EXPORT_SYMBOL_GPL(vhost_vq_access_ok);
Patches currently in stable-queue which might be from jasowang(a)redhat.com are
queue-4.14/vhost-validate-log-when-iotlb-is-enabled.patch
queue-4.14/vhost_net-add-missing-lock-nesting-notation.patch
queue-4.14/vhost-correctly-remove-wait-queue-during-poll-failure.patch
This is a note to let you know that I've just added the patch titled
vhost: correctly remove wait queue during poll failure
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vhost-correctly-remove-wait-queue-during-poll-failure.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Jason Wang <jasowang(a)redhat.com>
Date: Tue, 27 Mar 2018 20:50:52 +0800
Subject: vhost: correctly remove wait queue during poll failure
From: Jason Wang <jasowang(a)redhat.com>
[ Upstream commit dc6455a71c7fc5117977e197f67f71b49f27baba ]
We tried to remove vq poll from wait queue, but do not check whether
or not it was in a list before. This will lead double free. Fixing
this by switching to use vhost_poll_stop() which zeros poll->wqh after
removing poll from waitqueue to make sure it won't be freed twice.
Cc: Darren Kenny <darren.kenny(a)oracle.com>
Reported-by: syzbot+c0272972b01b872e604a(a)syzkaller.appspotmail.com
Fixes: 2b8b328b61c79 ("vhost_net: handle polling errors when setting backend")
Signed-off-by: Jason Wang <jasowang(a)redhat.com>
Reviewed-by: Darren Kenny <darren.kenny(a)oracle.com>
Acked-by: Michael S. Tsirkin <mst(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/vhost/vhost.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -213,8 +213,7 @@ int vhost_poll_start(struct vhost_poll *
if (mask)
vhost_poll_wakeup(&poll->wait, 0, 0, (void *)mask);
if (mask & POLLERR) {
- if (poll->wqh)
- remove_wait_queue(poll->wqh, &poll->wait);
+ vhost_poll_stop(poll);
ret = -EINVAL;
}
Patches currently in stable-queue which might be from jasowang(a)redhat.com are
queue-4.14/vhost-validate-log-when-iotlb-is-enabled.patch
queue-4.14/vhost_net-add-missing-lock-nesting-notation.patch
queue-4.14/vhost-correctly-remove-wait-queue-during-poll-failure.patch
This is a note to let you know that I've just added the patch titled
team: move dev_mc_sync after master_upper_dev_link in team_port_add
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Mon, 26 Mar 2018 01:25:06 +0800
Subject: team: move dev_mc_sync after master_upper_dev_link in team_port_add
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit 982cf3b3999d39a2eaca0a65542df33c19b5d814 ]
The same fix as in 'bonding: move dev_mc_sync after master_upper_dev_link
in bond_enslave' is needed for team driver.
The panic can be reproduced easily:
ip link add team1 type team
ip link set team1 up
ip link add link team1 vlan1 type vlan id 80
ip link set vlan1 master team1
Fixes: cb41c997d444 ("team: team should sync the port's uc/mc addrs when add a port")
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Acked-by: Jiri Pirko <jiri(a)mellanox.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/team/team.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1197,11 +1197,6 @@ static int team_port_add(struct team *te
goto err_dev_open;
}
- netif_addr_lock_bh(dev);
- dev_uc_sync_multiple(port_dev, dev);
- dev_mc_sync_multiple(port_dev, dev);
- netif_addr_unlock_bh(dev);
-
err = vlan_vids_add_by_dev(port_dev, dev);
if (err) {
netdev_err(dev, "Failed to add vlan ids to device %s\n",
@@ -1241,6 +1236,11 @@ static int team_port_add(struct team *te
goto err_option_port_add;
}
+ netif_addr_lock_bh(dev);
+ dev_uc_sync_multiple(port_dev, dev);
+ dev_mc_sync_multiple(port_dev, dev);
+ netif_addr_unlock_bh(dev);
+
port->index = -1;
list_add_tail_rcu(&port->list, &team->port_list);
team_port_enable(team, port);
@@ -1265,8 +1265,6 @@ err_enable_netpoll:
vlan_vids_del_by_dev(port_dev, dev);
err_vids_add:
- dev_uc_unsync(port_dev, dev);
- dev_mc_unsync(port_dev, dev);
dev_close(port_dev);
err_dev_open:
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.14/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.14/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.14/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.14/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.14/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
strparser: Fix sign of err codes
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
strparser-fix-sign-of-err-codes.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Dave Watson <davejwatson(a)fb.com>
Date: Mon, 26 Mar 2018 12:31:21 -0700
Subject: strparser: Fix sign of err codes
From: Dave Watson <davejwatson(a)fb.com>
[ Upstream commit cd00edc179863848abab5cc5683de5b7b5f70954 ]
strp_parser_err is called with a negative code everywhere, which then
calls abort_parser with a negative code. strp_msg_timeout calls
abort_parser directly with a positive code. Negate ETIMEDOUT
to match signed-ness of other calls.
The default abort_parser callback, strp_abort_strp, sets
sk->sk_err to err. Also negate the error here so sk_err always
holds a positive value, as the rest of the net code expects. Currently
a negative sk_err can result in endless loops, or user code that
thinks it actually sent/received err bytes.
Found while testing net/tls_sw recv path.
Fixes: 43a0c6751a322847 ("strparser: Stream parser for messages")
Signed-off-by: Dave Watson <davejwatson(a)fb.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/strparser/strparser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/net/strparser/strparser.c
+++ b/net/strparser/strparser.c
@@ -60,7 +60,7 @@ static void strp_abort_strp(struct strpa
struct sock *sk = strp->sk;
/* Report an error on the lower socket */
- sk->sk_err = err;
+ sk->sk_err = -err;
sk->sk_error_report(sk);
}
}
@@ -458,7 +458,7 @@ static void strp_msg_timeout(struct work
/* Message assembly timed out */
STRP_STATS_INCR(strp->stats.msg_timeouts);
strp->cb.lock(strp);
- strp->cb.abort_parser(strp, ETIMEDOUT);
+ strp->cb.abort_parser(strp, -ETIMEDOUT);
strp->cb.unlock(strp);
}
Patches currently in stable-queue which might be from davejwatson(a)fb.com are
queue-4.14/strparser-fix-sign-of-err-codes.patch
This is a note to let you know that I've just added the patch titled
sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Sun, 8 Apr 2018 07:52:08 -0700
Subject: sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 81e98370293afcb58340ce8bd71af7b97f925c26 ]
Check must happen before call to ipv6_addr_v4mapped()
syzbot report was :
BUG: KMSAN: uninit-value in sctp_sockaddr_af net/sctp/socket.c:359 [inline]
BUG: KMSAN: uninit-value in sctp_do_bind+0x60f/0xdc0 net/sctp/socket.c:384
CPU: 0 PID: 3576 Comm: syzkaller968804 Not tainted 4.16.0+ #82
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x185/0x1d0 lib/dump_stack.c:53
kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
__msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
sctp_sockaddr_af net/sctp/socket.c:359 [inline]
sctp_do_bind+0x60f/0xdc0 net/sctp/socket.c:384
sctp_bind+0x149/0x190 net/sctp/socket.c:332
inet6_bind+0x1fd/0x1820 net/ipv6/af_inet6.c:293
SYSC_bind+0x3f2/0x4b0 net/socket.c:1474
SyS_bind+0x54/0x80 net/socket.c:1460
do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x3d/0xa2
RIP: 0033:0x43fd49
RSP: 002b:00007ffe99df3d28 EFLAGS: 00000213 ORIG_RAX: 0000000000000031
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043fd49
RDX: 0000000000000010 RSI: 0000000020000000 RDI: 0000000000000003
RBP: 00000000006ca018 R08: 00000000004002c8 R09: 00000000004002c8
R10: 00000000004002c8 R11: 0000000000000213 R12: 0000000000401670
R13: 0000000000401700 R14: 0000000000000000 R15: 0000000000000000
Local variable description: ----address@SYSC_bind
Variable was created at:
SYSC_bind+0x6f/0x4b0 net/socket.c:1461
SyS_bind+0x54/0x80 net/socket.c:1460
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Vlad Yasevich <vyasevich(a)gmail.com>
Cc: Neil Horman <nhorman(a)tuxdriver.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/sctp/socket.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -337,11 +337,14 @@ static struct sctp_af *sctp_sockaddr_af(
if (!opt->pf->af_supported(addr->sa.sa_family, opt))
return NULL;
- /* V4 mapped address are really of AF_INET family */
- if (addr->sa.sa_family == AF_INET6 &&
- ipv6_addr_v4mapped(&addr->v6.sin6_addr) &&
- !opt->pf->af_supported(AF_INET, opt))
- return NULL;
+ if (addr->sa.sa_family == AF_INET6) {
+ if (len < SIN6_LEN_RFC2133)
+ return NULL;
+ /* V4 mapped address are really of AF_INET family */
+ if (ipv6_addr_v4mapped(&addr->v6.sin6_addr) &&
+ !opt->pf->af_supported(AF_INET, opt))
+ return NULL;
+ }
/* If we get this far, af is valid. */
af = sctp_get_af_specific(addr->sa.sa_family);
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
sky2: Increase D3 delay to sky2 stops working after suspend
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sky2-increase-d3-delay-to-sky2-stops-working-after-suspend.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Kai-Heng Feng <kai.heng.feng(a)canonical.com>
Date: Sat, 31 Mar 2018 23:42:03 +0800
Subject: sky2: Increase D3 delay to sky2 stops working after suspend
From: Kai-Heng Feng <kai.heng.feng(a)canonical.com>
[ Upstream commit afb133637071be6deeb8b3d0e55593ffbf63c527 ]
The sky2 ethernet stops working after system resume from suspend:
[ 582.852065] sky2 0000:04:00.0: Refused to change power state, currently in D3
The current 150ms delay is not enough, change it to 200ms can solve the
issue.
BugLink: https://bugs.launchpad.net/bugs/1758507
Cc: Stable <stable(a)vger.kernel.org>
Signed-off-by: Kai-Heng Feng <kai.heng.feng(a)canonical.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/marvell/sky2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -5087,7 +5087,7 @@ static int sky2_probe(struct pci_dev *pd
INIT_WORK(&hw->restart_work, sky2_restart);
pci_set_drvdata(pdev, hw);
- pdev->d3_delay = 150;
+ pdev->d3_delay = 200;
return 0;
Patches currently in stable-queue which might be from kai.heng.feng(a)canonical.com are
queue-4.14/sky2-increase-d3-delay-to-sky2-stops-working-after-suspend.patch
This is a note to let you know that I've just added the patch titled
sctp: do not leak kernel memory to user space
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sctp-do-not-leak-kernel-memory-to-user-space.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Sat, 7 Apr 2018 17:15:22 -0700
Subject: sctp: do not leak kernel memory to user space
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 6780db244d6b1537d139dea0ec8aad10cf9e4adb ]
syzbot produced a nice report [1]
Issue here is that a recvmmsg() managed to leak 8 bytes of kernel memory
to user space, because sin_zero (padding field) was not properly cleared.
[1]
BUG: KMSAN: uninit-value in copy_to_user include/linux/uaccess.h:184 [inline]
BUG: KMSAN: uninit-value in move_addr_to_user+0x32e/0x530 net/socket.c:227
CPU: 1 PID: 3586 Comm: syzkaller481044 Not tainted 4.16.0+ #82
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x185/0x1d0 lib/dump_stack.c:53
kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
copy_to_user include/linux/uaccess.h:184 [inline]
move_addr_to_user+0x32e/0x530 net/socket.c:227
___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
__sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x3d/0xa2
RIP: 0033:0x4401c9
RSP: 002b:00007ffc56f73098 EFLAGS: 00000217 ORIG_RAX: 000000000000012b
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004401c9
RDX: 0000000000000001 RSI: 0000000020003ac0 RDI: 0000000000000003
RBP: 00000000006ca018 R08: 0000000020003bc0 R09: 0000000000000010
R10: 0000000000000000 R11: 0000000000000217 R12: 0000000000401af0
R13: 0000000000401b80 R14: 0000000000000000 R15: 0000000000000000
Local variable description: ----addr@___sys_recvmsg
Variable was created at:
___sys_recvmsg+0xd5/0x810 net/socket.c:2172
__sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
Bytes 8-15 of 16 are uninitialized
==================================================================
Kernel panic - not syncing: panic_on_warn set ...
CPU: 1 PID: 3586 Comm: syzkaller481044 Tainted: G B 4.16.0+ #82
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x185/0x1d0 lib/dump_stack.c:53
panic+0x39d/0x940 kernel/panic.c:183
kmsan_report+0x238/0x240 mm/kmsan/kmsan.c:1083
kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
copy_to_user include/linux/uaccess.h:184 [inline]
move_addr_to_user+0x32e/0x530 net/socket.c:227
___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
__sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x3d/0xa2
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Vlad Yasevich <vyasevich(a)gmail.com>
Cc: Neil Horman <nhorman(a)tuxdriver.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/sctp/ipv6.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -728,8 +728,10 @@ static int sctp_v6_addr_to_user(struct s
sctp_v6_map_v4(addr);
}
- if (addr->sa.sa_family == AF_INET)
+ if (addr->sa.sa_family == AF_INET) {
+ memset(addr->v4.sin_zero, 0, sizeof(addr->v4.sin_zero));
return sizeof(struct sockaddr_in);
+ }
return sizeof(struct sockaddr_in6);
}
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
route: check sysctl_fib_multipath_use_neigh earlier than hash
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Sun, 1 Apr 2018 22:40:35 +0800
Subject: route: check sysctl_fib_multipath_use_neigh earlier than hash
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit 6174a30df1b902e1fedbd728f5343937e83e64e6 ]
Prior to this patch, when one packet is hashed into path [1]
(hash <= nh_upper_bound) and it's neigh is dead, it will try
path [2]. However, if path [2]'s neigh is alive but it's
hash > nh_upper_bound, it will not return this alive path.
This packet will never be sent even if path [2] is alive.
3.3.3.1/24:
nexthop via 1.1.1.254 dev eth1 weight 1 <--[1] (dead neigh)
nexthop via 2.2.2.254 dev eth2 weight 1 <--[2]
With sysctl_fib_multipath_use_neigh set is supposed to find an
available path respecting to the l3/l4 hash. But if there is
no available route with this hash, it should at least return
an alive route even with other hash.
This patch is to fix it by processing fib_multipath_use_neigh
earlier than the hash check, so that it will at least return
an alive route if there is when fib_multipath_use_neigh is
enabled. It's also compatible with before when there are alive
routes with the l3/l4 hash.
Fixes: a6db4494d218 ("net: ipv4: Consider failed nexthops in multipath routes")
Reported-by: Jianlin Shi <jishi(a)redhat.com>
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Acked-by: David Ahern <dsa(a)cumulusnetworks.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv4/fib_semantics.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -1755,18 +1755,20 @@ void fib_select_multipath(struct fib_res
bool first = false;
for_nexthops(fi) {
+ if (net->ipv4.sysctl_fib_multipath_use_neigh) {
+ if (!fib_good_nh(nh))
+ continue;
+ if (!first) {
+ res->nh_sel = nhsel;
+ first = true;
+ }
+ }
+
if (hash > atomic_read(&nh->nh_upper_bound))
continue;
- if (!net->ipv4.sysctl_fib_multipath_use_neigh ||
- fib_good_nh(nh)) {
- res->nh_sel = nhsel;
- return;
- }
- if (!first) {
- res->nh_sel = nhsel;
- first = true;
- }
+ res->nh_sel = nhsel;
+ return;
} endfor_nexthops(fi);
}
#endif
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.14/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.14/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.14/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.14/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.14/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
r8169: fix setting driver_data after register_netdev
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
r8169-fix-setting-driver_data-after-register_netdev.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Heiner Kallweit <hkallweit1(a)gmail.com>
Date: Mon, 26 Mar 2018 19:19:30 +0200
Subject: r8169: fix setting driver_data after register_netdev
From: Heiner Kallweit <hkallweit1(a)gmail.com>
[ Upstream commit 19c9ea363a244f85f90a424f9936e6d56449e33c ]
pci_set_drvdata() is called only after registering the net_device,
therefore we could run into a NPE if one of the functions using
driver_data is called before it's set.
Fix this by calling pci_set_drvdata() before registering the
net_device.
This fix is a candidate for stable. As far as I can see the
bug has been there in kernel version 3.2 already, therefore
I can't provide a reference which commit is fixed by it.
The fix may need small adjustments per kernel version because
due to other changes the label which is jumped to if
register_netdev() fails has changed over time.
Reported-by: David Miller <davem(a)davemloft.net>
Signed-off-by: Heiner Kallweit <hkallweit1(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/realtek/r8169.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -8466,12 +8466,12 @@ static int rtl_init_one(struct pci_dev *
goto err_out_msi_5;
}
+ pci_set_drvdata(pdev, dev);
+
rc = register_netdev(dev);
if (rc < 0)
goto err_out_cnt_6;
- pci_set_drvdata(pdev, dev);
-
netif_info(tp, probe, dev, "%s at 0x%p, %pM, XID %08x IRQ %d\n",
rtl_chip_infos[chipset].name, ioaddr, dev->dev_addr,
(u32)(RTL_R32(TxConfig) & 0x9cf0f8ff), pdev->irq);
Patches currently in stable-queue which might be from hkallweit1(a)gmail.com are
queue-4.14/r8169-fix-setting-driver_data-after-register_netdev.patch
This is a note to let you know that I've just added the patch titled
pptp: remove a buggy dst release in pptp_connect()
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Mon, 2 Apr 2018 18:48:37 -0700
Subject: pptp: remove a buggy dst release in pptp_connect()
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit bfacfb457b36911a10140b8cb3ce76a74883ac5a ]
Once dst has been cached in socket via sk_setup_caps(),
it is illegal to call ip_rt_put() (or dst_release()),
since sk_setup_caps() did not change dst refcount.
We can still dereference it since we hold socket lock.
Caugth by syzbot :
BUG: KASAN: use-after-free in atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
BUG: KASAN: use-after-free in dst_release+0x27/0xa0 net/core/dst.c:185
Write of size 4 at addr ffff8801c54dc040 by task syz-executor4/20088
CPU: 1 PID: 20088 Comm: syz-executor4 Not tainted 4.16.0+ #376
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1a7/0x27d lib/dump_stack.c:53
print_address_description+0x73/0x250 mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report+0x23c/0x360 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x137/0x190 mm/kasan/kasan.c:267
kasan_check_write+0x14/0x20 mm/kasan/kasan.c:278
atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
dst_release+0x27/0xa0 net/core/dst.c:185
sk_dst_set include/net/sock.h:1812 [inline]
sk_dst_reset include/net/sock.h:1824 [inline]
sock_setbindtodevice net/core/sock.c:610 [inline]
sock_setsockopt+0x431/0x1b20 net/core/sock.c:707
SYSC_setsockopt net/socket.c:1845 [inline]
SyS_setsockopt+0x2ff/0x360 net/socket.c:1828
do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
RIP: 0033:0x4552d9
RSP: 002b:00007f4878126c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
RAX: ffffffffffffffda RBX: 00007f48781276d4 RCX: 00000000004552d9
RDX: 0000000000000019 RSI: 0000000000000001 RDI: 0000000000000013
RBP: 000000000072bea0 R08: 0000000000000010 R09: 0000000000000000
R10: 00000000200010c0 R11: 0000000000000246 R12: 00000000ffffffff
R13: 0000000000000526 R14: 00000000006fac30 R15: 0000000000000000
Allocated by task 20088:
save_stack+0x43/0xd0 mm/kasan/kasan.c:447
set_track mm/kasan/kasan.c:459 [inline]
kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:552
kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
kmem_cache_alloc+0x12e/0x760 mm/slab.c:3542
dst_alloc+0x11f/0x1a0 net/core/dst.c:104
rt_dst_alloc+0xe9/0x540 net/ipv4/route.c:1520
__mkroute_output net/ipv4/route.c:2265 [inline]
ip_route_output_key_hash_rcu+0xa49/0x2c60 net/ipv4/route.c:2493
ip_route_output_key_hash+0x20b/0x370 net/ipv4/route.c:2322
__ip_route_output_key include/net/route.h:126 [inline]
ip_route_output_flow+0x26/0xa0 net/ipv4/route.c:2577
ip_route_output_ports include/net/route.h:163 [inline]
pptp_connect+0xa84/0x1170 drivers/net/ppp/pptp.c:453
SYSC_connect+0x213/0x4a0 net/socket.c:1639
SyS_connect+0x24/0x30 net/socket.c:1620
do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Freed by task 20082:
save_stack+0x43/0xd0 mm/kasan/kasan.c:447
set_track mm/kasan/kasan.c:459 [inline]
__kasan_slab_free+0x11a/0x170 mm/kasan/kasan.c:520
kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:527
__cache_free mm/slab.c:3486 [inline]
kmem_cache_free+0x83/0x2a0 mm/slab.c:3744
dst_destroy+0x266/0x380 net/core/dst.c:140
dst_destroy_rcu+0x16/0x20 net/core/dst.c:153
__rcu_reclaim kernel/rcu/rcu.h:178 [inline]
rcu_do_batch kernel/rcu/tree.c:2675 [inline]
invoke_rcu_callbacks kernel/rcu/tree.c:2930 [inline]
__rcu_process_callbacks kernel/rcu/tree.c:2897 [inline]
rcu_process_callbacks+0xd6c/0x17b0 kernel/rcu/tree.c:2914
__do_softirq+0x2d7/0xb85 kernel/softirq.c:285
The buggy address belongs to the object at ffff8801c54dc000
which belongs to the cache ip_dst_cache of size 168
The buggy address is located 64 bytes inside of
168-byte region [ffff8801c54dc000, ffff8801c54dc0a8)
The buggy address belongs to the page:
page:ffffea0007153700 count:1 mapcount:0 mapping:ffff8801c54dc000 index:0x0
flags: 0x2fffc0000000100(slab)
raw: 02fffc0000000100 ffff8801c54dc000 0000000000000000 0000000100000010
raw: ffffea0006b34b20 ffffea0006b6c1e0 ffff8801d674a1c0 0000000000000000
page dumped because: kasan: bad access detected
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ppp/pptp.c | 1 -
1 file changed, 1 deletion(-)
--- a/drivers/net/ppp/pptp.c
+++ b/drivers/net/ppp/pptp.c
@@ -464,7 +464,6 @@ static int pptp_connect(struct socket *s
po->chan.mtu = dst_mtu(&rt->dst);
if (!po->chan.mtu)
po->chan.mtu = PPP_MRU;
- ip_rt_put(rt);
po->chan.mtu -= PPTP_HEADER_OVERHEAD;
po->chan.hdrlen = 2 + sizeof(struct pptp_gre_header);
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
netlink: make sure nladdr has correct size in netlink_connect()
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Alexander Potapenko <glider(a)google.com>
Date: Fri, 23 Mar 2018 13:49:02 +0100
Subject: netlink: make sure nladdr has correct size in netlink_connect()
From: Alexander Potapenko <glider(a)google.com>
[ Upstream commit 7880287981b60a6808f39f297bb66936e8bdf57a ]
KMSAN reports use of uninitialized memory in the case when |alen| is
smaller than sizeof(struct sockaddr_nl), and therefore |nladdr| isn't
fully copied from the userspace.
Signed-off-by: Alexander Potapenko <glider(a)google.com>
Fixes: 1da177e4c3f41524 ("Linux-2.6.12-rc2")
Reviewed-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/netlink/af_netlink.c | 3 +++
1 file changed, 3 insertions(+)
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -1053,6 +1053,9 @@ static int netlink_connect(struct socket
if (addr->sa_family != AF_NETLINK)
return -EINVAL;
+ if (alen < sizeof(struct sockaddr_nl))
+ return -EINVAL;
+
if ((nladdr->nl_groups || nladdr->nl_pid) &&
!netlink_allowed(sock, NL_CFG_F_NONROOT_SEND))
return -EPERM;
Patches currently in stable-queue which might be from glider(a)google.com are
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
This is a note to let you know that I've just added the patch titled
nfp: use full 40 bits of the NSP buffer address
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
nfp-use-full-40-bits-of-the-nsp-buffer-address.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Dirk van der Merwe <dirk.vandermerwe(a)netronome.com>
Date: Tue, 3 Apr 2018 17:24:23 -0700
Subject: nfp: use full 40 bits of the NSP buffer address
From: Dirk van der Merwe <dirk.vandermerwe(a)netronome.com>
[ Upstream commit 1489bbd10e16079ce30a53d3c22a431fd47af791 ]
The NSP default buffer is a piece of NFP memory where additional
command data can be placed. Its format has been copied from
host buffer, but the PCIe selection bits do not make sense in
this case. If those get masked out from a NFP address - writes
to random place in the chip memory may be issued and crash the
device.
Even in the general NSP buffer case, it doesn't make sense to have the
PCIe selection bits there anymore. These are unused at the moment, and
when it becomes necessary, the PCIe selection bits should rather be
moved to another register to utilise more bits for the buffer address.
This has never been an issue because the buffer used to be
allocated in memory with less-than-38-bit-long address but that
is about to change.
Fixes: 1a64821c6af7 ("nfp: add support for service processor access")
Signed-off-by: Dirk van der Merwe <dirk.vandermerwe(a)netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski(a)netronome.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
+++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c
@@ -68,10 +68,11 @@
/* CPP address to retrieve the data from */
#define NSP_BUFFER 0x10
#define NSP_BUFFER_CPP GENMASK_ULL(63, 40)
-#define NSP_BUFFER_PCIE GENMASK_ULL(39, 38)
-#define NSP_BUFFER_ADDRESS GENMASK_ULL(37, 0)
+#define NSP_BUFFER_ADDRESS GENMASK_ULL(39, 0)
#define NSP_DFLT_BUFFER 0x18
+#define NSP_DFLT_BUFFER_CPP GENMASK_ULL(63, 40)
+#define NSP_DFLT_BUFFER_ADDRESS GENMASK_ULL(39, 0)
#define NSP_DFLT_BUFFER_CONFIG 0x20
#define NSP_DFLT_BUFFER_SIZE_MB GENMASK_ULL(7, 0)
@@ -412,8 +413,8 @@ static int nfp_nsp_command_buf(struct nf
if (err < 0)
return err;
- cpp_id = FIELD_GET(NSP_BUFFER_CPP, reg) << 8;
- cpp_buf = FIELD_GET(NSP_BUFFER_ADDRESS, reg);
+ cpp_id = FIELD_GET(NSP_DFLT_BUFFER_CPP, reg) << 8;
+ cpp_buf = FIELD_GET(NSP_DFLT_BUFFER_ADDRESS, reg);
if (in_buf && in_size) {
err = nfp_cpp_write(cpp, cpp_id, cpp_buf, in_buf, in_size);
Patches currently in stable-queue which might be from dirk.vandermerwe(a)netronome.com are
queue-4.14/nfp-use-full-40-bits-of-the-nsp-buffer-address.patch
This is a note to let you know that I've just added the patch titled
net sched actions: fix dumping which requires several messages to user space
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-sched-actions-fix-dumping-which-requires-several-messages-to-user-space.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Craig Dillabaugh <cdillaba(a)mojatatu.com>
Date: Mon, 26 Mar 2018 14:58:32 -0400
Subject: net sched actions: fix dumping which requires several messages to user space
From: Craig Dillabaugh <cdillaba(a)mojatatu.com>
[ Upstream commit 734549eb550c0c720bc89e50501f1b1e98cdd841 ]
Fixes a bug in the tcf_dump_walker function that can cause some actions
to not be reported when dumping a large number of actions. This issue
became more aggrevated when cookies feature was added. In particular
this issue is manifest when large cookie values are assigned to the
actions and when enough actions are created that the resulting table
must be dumped in multiple batches.
The number of actions returned in each batch is limited by the total
number of actions and the memory buffer size. With small cookies
the numeric limit is reached before the buffer size limit, which avoids
the code path triggering this bug. When large cookies are used buffer
fills before the numeric limit, and the erroneous code path is hit.
For example after creating 32 csum actions with the cookie
aaaabbbbccccdddd
$ tc actions ls action csum
total acts 26
action order 0: csum (tcp) action continue
index 1 ref 1 bind 0
cookie aaaabbbbccccdddd
.....
action order 25: csum (tcp) action continue
index 26 ref 1 bind 0
cookie aaaabbbbccccdddd
total acts 6
action order 0: csum (tcp) action continue
index 28 ref 1 bind 0
cookie aaaabbbbccccdddd
......
action order 5: csum (tcp) action continue
index 32 ref 1 bind 0
cookie aaaabbbbccccdddd
Note that the action with index 27 is omitted from the report.
Fixes: 4b3550ef530c ("[NET_SCHED]: Use nla_nest_start/nla_nest_end")"
Signed-off-by: Craig Dillabaugh <cdillaba(a)mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs(a)mojatatu.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/sched/act_api.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/net/sched/act_api.c
+++ b/net/sched/act_api.c
@@ -133,8 +133,10 @@ static int tcf_dump_walker(struct tcf_id
continue;
nest = nla_nest_start(skb, n_i);
- if (!nest)
+ if (!nest) {
+ index--;
goto nla_put_failure;
+ }
err = tcf_action_dump_1(skb, p, 0, 0);
if (err < 0) {
index--;
Patches currently in stable-queue which might be from cdillaba(a)mojatatu.com are
queue-4.14/net-sched-actions-fix-dumping-which-requires-several-messages-to-user-space.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Sync netdev vxlan ports at open
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-sync-netdev-vxlan-ports-at-open.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Shahar Klein <shahark(a)mellanox.com>
Date: Tue, 20 Mar 2018 14:44:40 +0200
Subject: net/mlx5e: Sync netdev vxlan ports at open
From: Shahar Klein <shahark(a)mellanox.com>
[ Upstream commit a117f73dc2430443f23e18367fa545981129c1a6 ]
When mlx5_core is loaded it is expected to sync ports
with all vxlan devices so it can support vxlan encap/decap.
This is done via udp_tunnel_get_rx_info(). Currently this
call is set in mlx5e_nic_enable() and if the netdev is not in
NETREG_REGISTERED state it will not be called.
Normally on load the netdev state is not NETREG_REGISTERED
so udp_tunnel_get_rx_info() will not be called.
Moving udp_tunnel_get_rx_info() to mlx5e_open() so
it will be called on netdev UP event and allow encap/decap.
Fixes: 610e89e05c3f ("net/mlx5e: Don't sync netdev state when not registered")
Signed-off-by: Shahar Klein <shahark(a)mellanox.com>
Reviewed-by: Roi Dayan <roid(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -2718,6 +2718,9 @@ int mlx5e_open(struct net_device *netdev
mlx5_set_port_admin_status(priv->mdev, MLX5_PORT_UP);
mutex_unlock(&priv->state_lock);
+ if (mlx5e_vxlan_allowed(priv->mdev))
+ udp_tunnel_get_rx_info(netdev);
+
return err;
}
@@ -4276,13 +4279,6 @@ static void mlx5e_nic_enable(struct mlx5
if (netdev->reg_state != NETREG_REGISTERED)
return;
- /* Device already registered: sync netdev system state */
- if (mlx5e_vxlan_allowed(mdev)) {
- rtnl_lock();
- udp_tunnel_get_rx_info(netdev);
- rtnl_unlock();
- }
-
queue_work(priv->wq, &priv->set_rx_mode_work);
rtnl_lock();
Patches currently in stable-queue which might be from shahark(a)mellanox.com are
queue-4.14/net-mlx5e-sync-netdev-vxlan-ports-at-open.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Fix memory usage issues in offloading TC flows
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Jianbo Liu <jianbol(a)mellanox.com>
Date: Thu, 8 Mar 2018 09:20:55 +0000
Subject: net/mlx5e: Fix memory usage issues in offloading TC flows
From: Jianbo Liu <jianbol(a)mellanox.com>
[ Upstream commit af1607c37d9d85a66fbcf43b7f11bf3d94b9bb69 ]
For NIC flows, the parsed attributes are not freed when we exit
successfully from mlx5e_configure_flower().
There is possible double free for eswitch flows. If error is returned
from rhashtable_insert_fast(), the parse attrs will be freed in
mlx5e_tc_del_flow(), but they will be freed again before exiting
mlx5e_configure_flower().
To fix both issues we do the following:
(1) change the condition that determines if to issue the free call to
check if this flow is NIC flow, or it does not have encap action.
(2) reorder the code such that that the check and free calls are done
before we attempt to add into the hash table.
Fixes: 232c001398ae ('net/mlx5e: Add support to neighbour update flow')
Signed-off-by: Jianbo Liu <jianbol(a)mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Reviewed-by: Roi Dayan <roid(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -2091,19 +2091,19 @@ int mlx5e_configure_flower(struct mlx5e_
if (err != -EAGAIN)
flow->flags |= MLX5E_TC_FLOW_OFFLOADED;
+ if (!(flow->flags & MLX5E_TC_FLOW_ESWITCH) ||
+ !(flow->esw_attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP))
+ kvfree(parse_attr);
+
err = rhashtable_insert_fast(&tc->ht, &flow->node,
tc->ht_params);
- if (err)
- goto err_del_rule;
+ if (err) {
+ mlx5e_tc_del_flow(priv, flow);
+ kfree(flow);
+ }
- if (flow->flags & MLX5E_TC_FLOW_ESWITCH &&
- !(flow->esw_attr->action & MLX5_FLOW_CONTEXT_ACTION_ENCAP))
- kvfree(parse_attr);
return err;
-err_del_rule:
- mlx5e_tc_del_flow(priv, flow);
-
err_free:
kvfree(parse_attr);
kfree(flow);
Patches currently in stable-queue which might be from jianbol(a)mellanox.com are
queue-4.14/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.14/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Fix traffic being dropped on VF representor
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-fix-traffic-being-dropped-on-vf-representor.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Roi Dayan <roid(a)mellanox.com>
Date: Wed, 28 Feb 2018 12:56:42 +0200
Subject: net/mlx5e: Fix traffic being dropped on VF representor
From: Roi Dayan <roid(a)mellanox.com>
[ Upstream commit 4246f698dd58e3c6246fa919ef0b0a1d29a57e4a ]
Increase representor netdev RQ size to avoid dropped packets.
The current size (two) is just too small to keep up with
conventional slow path traffic patterns.
Also match the SQ size to the RQ size.
Fixes: cb67b832921c ("net/mlx5e: Introduce SRIOV VF representors")
Signed-off-by: Roi Dayan <roid(a)mellanox.com>
Reviewed-by: Paul Blakey <paulb(a)mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -43,6 +43,11 @@
#include "en_tc.h"
#include "fs_core.h"
+#define MLX5E_REP_PARAMS_LOG_SQ_SIZE \
+ max(0x6, MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE)
+#define MLX5E_REP_PARAMS_LOG_RQ_SIZE \
+ max(0x6, MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE)
+
static const char mlx5e_rep_driver_name[] = "mlx5e_rep";
static void mlx5e_rep_get_drvinfo(struct net_device *dev,
@@ -798,9 +803,9 @@ static void mlx5e_build_rep_params(struc
MLX5_CQ_PERIOD_MODE_START_FROM_CQE :
MLX5_CQ_PERIOD_MODE_START_FROM_EQE;
- params->log_sq_size = MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE;
+ params->log_sq_size = MLX5E_REP_PARAMS_LOG_SQ_SIZE;
params->rq_wq_type = MLX5_WQ_TYPE_LINKED_LIST;
- params->log_rq_size = MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE;
+ params->log_rq_size = MLX5E_REP_PARAMS_LOG_RQ_SIZE;
params->rx_am_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
Patches currently in stable-queue which might be from roid(a)mellanox.com are
queue-4.14/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.14/net-mlx5e-fix-traffic-being-dropped-on-vf-representor.patch
queue-4.14/net-mlx5e-sync-netdev-vxlan-ports-at-open.patch
queue-4.14/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Avoid using the ipv6 stub in the TC offload neigh update path
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-avoid-using-the-ipv6-stub-in-the-tc-offload-neigh-update-path.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Or Gerlitz <ogerlitz(a)mellanox.com>
Date: Tue, 13 Mar 2018 21:43:43 +0200
Subject: net/mlx5e: Avoid using the ipv6 stub in the TC offload neigh update path
From: Or Gerlitz <ogerlitz(a)mellanox.com>
[ Upstream commit 423c9db29943cfc43e3a408192e9efa4178af6a1 ]
Currently we use the global ipv6_stub var to access the ipv6 global
nd table. This practice gets us to troubles when the stub is only partially
set e.g when ipv6 is loaded under the disabled policy. In this case, as of commit
343d60aada5a ("ipv6: change ipv6_stub_impl.ipv6_dst_lookup to take net argument")
the stub is not null, but stub->nd_tbl is and we crash.
As we can access the ipv6 nd_tbl directly, the fix is just to avoid the
reference through the stub. There is one place in the code where we
issue ipv6 route lookup and keep doing it through the stub, but that
mentioned commit makes sure we get -EAFNOSUPPORT from the stack.
Fixes: 232c001398ae ("net/mlx5e: Add support to neighbour update flow")
Signed-off-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Reviewed-by: Aviv Heller <avivh(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 6 +++---
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -230,7 +230,7 @@ void mlx5e_remove_sqs_fwd_rules(struct m
static void mlx5e_rep_neigh_update_init_interval(struct mlx5e_rep_priv *rpriv)
{
#if IS_ENABLED(CONFIG_IPV6)
- unsigned long ipv6_interval = NEIGH_VAR(&ipv6_stub->nd_tbl->parms,
+ unsigned long ipv6_interval = NEIGH_VAR(&nd_tbl.parms,
DELAY_PROBE_TIME);
#else
unsigned long ipv6_interval = ~0UL;
@@ -366,7 +366,7 @@ static int mlx5e_rep_netevent_event(stru
case NETEVENT_NEIGH_UPDATE:
n = ptr;
#if IS_ENABLED(CONFIG_IPV6)
- if (n->tbl != ipv6_stub->nd_tbl && n->tbl != &arp_tbl)
+ if (n->tbl != &nd_tbl && n->tbl != &arp_tbl)
#else
if (n->tbl != &arp_tbl)
#endif
@@ -414,7 +414,7 @@ static int mlx5e_rep_netevent_event(stru
* done per device delay prob time parameter.
*/
#if IS_ENABLED(CONFIG_IPV6)
- if (!p->dev || (p->tbl != ipv6_stub->nd_tbl && p->tbl != &arp_tbl))
+ if (!p->dev || (p->tbl != &nd_tbl && p->tbl != &arp_tbl))
#else
if (!p->dev || p->tbl != &arp_tbl)
#endif
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -484,7 +484,7 @@ void mlx5e_tc_update_neigh_used_value(st
tbl = &arp_tbl;
#if IS_ENABLED(CONFIG_IPV6)
else if (m_neigh->family == AF_INET6)
- tbl = ipv6_stub->nd_tbl;
+ tbl = &nd_tbl;
#endif
else
return;
Patches currently in stable-queue which might be from ogerlitz(a)mellanox.com are
queue-4.14/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.14/net-mlx5e-fix-traffic-being-dropped-on-vf-representor.patch
queue-4.14/net-mlx5e-avoid-using-the-ipv6-stub-in-the-tc-offload-neigh-update-path.patch
queue-4.14/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx5e: Don't override vport admin link state in switchdev mode
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Jianbo Liu <jianbol(a)mellanox.com>
Date: Fri, 2 Mar 2018 02:09:08 +0000
Subject: net/mlx5e: Don't override vport admin link state in switchdev mode
From: Jianbo Liu <jianbol(a)mellanox.com>
The vport admin original link state will be re-applied after returning
back to legacy mode, it is not right to change the admin link state value
when in switchdev mode.
Use direct vport commands to alter logical vport state in netdev
representor open/close flows rather than the administrative eswitch API.
Fixes: 20a1ea674783 ('net/mlx5e: Support VF vport link state control for SRIOV switchdev mode')
Signed-off-by: Jianbo Liu <jianbol(a)mellanox.com>
Reviewed-by: Roi Dayan <roid(a)mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz(a)mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm(a)mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -610,7 +610,6 @@ static int mlx5e_rep_open(struct net_dev
struct mlx5e_priv *priv = netdev_priv(dev);
struct mlx5e_rep_priv *rpriv = priv->ppriv;
struct mlx5_eswitch_rep *rep = rpriv->rep;
- struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
int err;
mutex_lock(&priv->state_lock);
@@ -618,8 +617,9 @@ static int mlx5e_rep_open(struct net_dev
if (err)
goto unlock;
- if (!mlx5_eswitch_set_vport_state(esw, rep->vport,
- MLX5_ESW_VPORT_ADMIN_STATE_UP))
+ if (!mlx5_modify_vport_admin_state(priv->mdev,
+ MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
+ rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_UP))
netif_carrier_on(dev);
unlock:
@@ -632,11 +632,12 @@ static int mlx5e_rep_close(struct net_de
struct mlx5e_priv *priv = netdev_priv(dev);
struct mlx5e_rep_priv *rpriv = priv->ppriv;
struct mlx5_eswitch_rep *rep = rpriv->rep;
- struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
int ret;
mutex_lock(&priv->state_lock);
- (void)mlx5_eswitch_set_vport_state(esw, rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
+ mlx5_modify_vport_admin_state(priv->mdev,
+ MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
+ rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
ret = mlx5e_close_locked(dev);
mutex_unlock(&priv->state_lock);
return ret;
Patches currently in stable-queue which might be from jianbol(a)mellanox.com are
queue-4.14/net-mlx5e-fix-memory-usage-issues-in-offloading-tc-flows.patch
queue-4.14/net-mlx5e-don-t-override-vport-admin-link-state-in-switchdev-mode.patch
This is a note to let you know that I've just added the patch titled
net/mlx4_core: Fix memory leak while delete slave's resources
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-mlx4_core-fix-memory-leak-while-delete-slave-s-resources.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Moshe Shemesh <moshe(a)mellanox.com>
Date: Tue, 27 Mar 2018 14:41:19 +0300
Subject: net/mlx4_core: Fix memory leak while delete slave's resources
From: Moshe Shemesh <moshe(a)mellanox.com>
[ Upstream commit 461d5f1b59490ce0096dfda45e10038c122a7892 ]
mlx4_delete_all_resources_for_slave in resource tracker should free all
memory allocated for a slave.
While releasing memory of fs_rule, it misses releasing memory of
fs_rule->mirr_mbox.
Fixes: 78efed275117 ('net/mlx4_core: Support mirroring VF DMFS rules on both ports')
Signed-off-by: Moshe Shemesh <moshe(a)mellanox.com>
Signed-off-by: Tariq Toukan <tariqt(a)mellanox.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
+++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
@@ -5089,6 +5089,7 @@ static void rem_slave_fs_rule(struct mlx
&tracker->res_tree[RES_FS_RULE]);
list_del(&fs_rule->com.list);
spin_unlock_irq(mlx4_tlock(dev));
+ kfree(fs_rule->mirr_mbox);
kfree(fs_rule);
state = 0;
break;
Patches currently in stable-queue which might be from moshe(a)mellanox.com are
queue-4.14/net-mlx4_core-fix-memory-leak-while-delete-slave-s-resources.patch
This is a note to let you know that I've just added the patch titled
net/ipv6: Increment OUTxxx counters after netfilter hook
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-ipv6-increment-outxxx-counters-after-netfilter-hook.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Jeff Barnhill <0xeffeff(a)gmail.com>
Date: Thu, 5 Apr 2018 21:29:47 +0000
Subject: net/ipv6: Increment OUTxxx counters after netfilter hook
From: Jeff Barnhill <0xeffeff(a)gmail.com>
[ Upstream commit 71a1c915238c970cd9bdd5bf158b1279d6b6d55b ]
At the end of ip6_forward(), IPSTATS_MIB_OUTFORWDATAGRAMS and
IPSTATS_MIB_OUTOCTETS are incremented immediately before the NF_HOOK call
for NFPROTO_IPV6 / NF_INET_FORWARD. As a result, these counters get
incremented regardless of whether or not the netfilter hook allows the
packet to continue being processed. This change increments the counters
in ip6_forward_finish() so that it will not happen if the netfilter hook
chooses to terminate the packet, which is similar to how IPv4 works.
Signed-off-by: Jeff Barnhill <0xeffeff(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_output.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -375,6 +375,11 @@ static int ip6_forward_proxy_check(struc
static inline int ip6_forward_finish(struct net *net, struct sock *sk,
struct sk_buff *skb)
{
+ struct dst_entry *dst = skb_dst(skb);
+
+ __IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS);
+ __IP6_ADD_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTOCTETS, skb->len);
+
return dst_output(net, sk, skb);
}
@@ -568,8 +573,6 @@ int ip6_forward(struct sk_buff *skb)
hdr->hop_limit--;
- __IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS);
- __IP6_ADD_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTOCTETS, skb->len);
return NF_HOOK(NFPROTO_IPV6, NF_INET_FORWARD,
net, NULL, skb, skb->dev, dst->dev,
ip6_forward_finish);
Patches currently in stable-queue which might be from 0xeffeff(a)gmail.com are
queue-4.14/net-ipv6-increment-outxxx-counters-after-netfilter-hook.patch
This is a note to let you know that I've just added the patch titled
net/ipv6: Fix route leaking between VRFs
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-ipv6-fix-route-leaking-between-vrfs.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: David Ahern <dsahern(a)gmail.com>
Date: Thu, 29 Mar 2018 17:44:57 -0700
Subject: net/ipv6: Fix route leaking between VRFs
From: David Ahern <dsahern(a)gmail.com>
[ Upstream commit b6cdbc85234b072340b8923e69f49ec293f905dc ]
Donald reported that IPv6 route leaking between VRFs is not working.
The root cause is the strict argument in the call to rt6_lookup when
validating the nexthop spec.
ip6_route_check_nh validates the gateway and device (if given) of a
route spec. It in turn could call rt6_lookup (e.g., lookup in a given
table did not succeed so it falls back to a full lookup) and if so
sets the strict argument to 1. That means if the egress device is given,
the route lookup needs to return a result with the same device. This
strict requirement does not work with VRFs (IPv4 or IPv6) because the
oif in the flow struct is overridden with the index of the VRF device
to trigger a match on the l3mdev rule and force the lookup to its table.
The right long term solution is to add an l3mdev index to the flow
struct such that the oif is not overridden. That solution will not
backport well, so this patch aims for a simpler solution to relax the
strict argument if the route spec device is an l3mdev slave. As done
in other places, use the FLOWI_FLAG_SKIP_NH_OIF to know that the
RT6_LOOKUP_F_IFACE flag needs to be removed.
Fixes: ca254490c8df ("net: Add VRF support to IPv6 stack")
Reported-by: Donald Sharp <sharpd(a)cumulusnetworks.com>
Signed-off-by: David Ahern <dsahern(a)gmail.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/route.c | 3 +++
1 file changed, 3 insertions(+)
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -871,6 +871,9 @@ static struct rt6_info *ip6_pol_route_lo
struct fib6_node *fn;
struct rt6_info *rt;
+ if (fl6->flowi6_flags & FLOWI_FLAG_SKIP_NH_OIF)
+ flags &= ~RT6_LOOKUP_F_IFACE;
+
read_lock_bh(&table->tb6_lock);
fn = fib6_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr);
restart:
Patches currently in stable-queue which might be from dsahern(a)gmail.com are
queue-4.14/perf-tools-fix-copyfile_offset-update-of-output-offset.patch
queue-4.14/net-ipv6-fix-route-leaking-between-vrfs.patch
queue-4.14/vrf-fix-use-after-free-and-double-free-in-vrf_finish_output.patch
This is a note to let you know that I've just added the patch titled
net: fix possible out-of-bound read in skb_network_protocol()
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Mon, 26 Mar 2018 08:08:07 -0700
Subject: net: fix possible out-of-bound read in skb_network_protocol()
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 1dfe82ebd7d8fd43dba9948fdfb31f145014baa0 ]
skb mac header is not necessarily set at the time skb_network_protocol()
is called. Use skb->data instead.
BUG: KASAN: slab-out-of-bounds in skb_network_protocol+0x46b/0x4b0 net/core/dev.c:2739
Read of size 2 at addr ffff8801b3097a0b by task syz-executor5/14242
CPU: 1 PID: 14242 Comm: syz-executor5 Not tainted 4.16.0-rc6+ #280
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x194/0x24d lib/dump_stack.c:53
print_address_description+0x73/0x250 mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report+0x23c/0x360 mm/kasan/report.c:412
__asan_report_load_n_noabort+0xf/0x20 mm/kasan/report.c:443
skb_network_protocol+0x46b/0x4b0 net/core/dev.c:2739
harmonize_features net/core/dev.c:2924 [inline]
netif_skb_features+0x509/0x9b0 net/core/dev.c:3011
validate_xmit_skb+0x81/0xb00 net/core/dev.c:3084
validate_xmit_skb_list+0xbf/0x120 net/core/dev.c:3142
packet_direct_xmit+0x117/0x790 net/packet/af_packet.c:256
packet_snd net/packet/af_packet.c:2944 [inline]
packet_sendmsg+0x3aed/0x60b0 net/packet/af_packet.c:2969
sock_sendmsg_nosec net/socket.c:629 [inline]
sock_sendmsg+0xca/0x110 net/socket.c:639
___sys_sendmsg+0x767/0x8b0 net/socket.c:2047
__sys_sendmsg+0xe5/0x210 net/socket.c:2081
Fixes: 19acc327258a ("gso: Handle Trans-Ether-Bridging protocol in skb_network_protocol()")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Cc: Pravin B Shelar <pshelar(a)ovn.org>
Reported-by: Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2696,7 +2696,7 @@ __be16 skb_network_protocol(struct sk_bu
if (unlikely(!pskb_may_pull(skb, sizeof(struct ethhdr))))
return 0;
- eth = (struct ethhdr *)skb_mac_header(skb);
+ eth = (struct ethhdr *)skb->data;
type = eth->h_proto;
}
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
net: fool proof dev_valid_name()
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
net-fool-proof-dev_valid_name.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:26 -0700
Subject: net: fool proof dev_valid_name()
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit a9d48205d0aedda021fc3728972a9e9934c2b9de ]
We want to use dev_valid_name() to validate tunnel names,
so better use strnlen(name, IFNAMSIZ) than strlen(name) to make
sure to not upset KASAN.
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1025,7 +1025,7 @@ bool dev_valid_name(const char *name)
{
if (*name == '\0')
return false;
- if (strlen(name) >= IFNAMSIZ)
+ if (strnlen(name, IFNAMSIZ) == IFNAMSIZ)
return false;
if (!strcmp(name, ".") || !strcmp(name, ".."))
return false;
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
ipv6: the entire IPv6 header chain must fit the first fragment
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Paolo Abeni <pabeni(a)redhat.com>
Date: Fri, 23 Mar 2018 14:47:30 +0100
Subject: ipv6: the entire IPv6 header chain must fit the first fragment
From: Paolo Abeni <pabeni(a)redhat.com>
[ Upstream commit 10b8a3de603df7b96004179b1b33b1708c76d144 ]
While building ipv6 datagram we currently allow arbitrary large
extheaders, even beyond pmtu size. The syzbot has found a way
to exploit the above to trigger the following splat:
kernel BUG at ./include/linux/skbuff.h:2073!
invalid opcode: 0000 [#1] SMP KASAN
Dumping ftrace buffer:
(ftrace buffer empty)
Modules linked in:
CPU: 1 PID: 4230 Comm: syzkaller672661 Not tainted 4.16.0-rc2+ #326
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
RIP: 0010:__skb_pull include/linux/skbuff.h:2073 [inline]
RIP: 0010:__ip6_make_skb+0x1ac8/0x2190 net/ipv6/ip6_output.c:1636
RSP: 0018:ffff8801bc18f0f0 EFLAGS: 00010293
RAX: ffff8801b17400c0 RBX: 0000000000000738 RCX: ffffffff84f01828
RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff8801b415ac18
RBP: ffff8801bc18f360 R08: ffff8801b4576844 R09: 0000000000000000
R10: ffff8801bc18f380 R11: ffffed00367aee4e R12: 00000000000000d6
R13: ffff8801b415a740 R14: dffffc0000000000 R15: ffff8801b45767c0
FS: 0000000001535880(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000002000b000 CR3: 00000001b4123001 CR4: 00000000001606e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
ip6_finish_skb include/net/ipv6.h:969 [inline]
udp_v6_push_pending_frames+0x269/0x3b0 net/ipv6/udp.c:1073
udpv6_sendmsg+0x2a96/0x3400 net/ipv6/udp.c:1343
inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:764
sock_sendmsg_nosec net/socket.c:630 [inline]
sock_sendmsg+0xca/0x110 net/socket.c:640
___sys_sendmsg+0x320/0x8b0 net/socket.c:2046
__sys_sendmmsg+0x1ee/0x620 net/socket.c:2136
SYSC_sendmmsg net/socket.c:2167 [inline]
SyS_sendmmsg+0x35/0x60 net/socket.c:2162
do_syscall_64+0x280/0x940 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
RIP: 0033:0x4404c9
RSP: 002b:00007ffdce35f948 EFLAGS: 00000217 ORIG_RAX: 0000000000000133
RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004404c9
RDX: 0000000000000003 RSI: 0000000020001f00 RDI: 0000000000000003
RBP: 00000000006cb018 R08: 00000000004002c8 R09: 00000000004002c8
R10: 0000000020000080 R11: 0000000000000217 R12: 0000000000401df0
R13: 0000000000401e80 R14: 0000000000000000 R15: 0000000000000000
Code: ff e8 1d 5e b9 fc e9 15 e9 ff ff e8 13 5e b9 fc e9 44 e8 ff ff e8 29
5e b9 fc e9 c0 e6 ff ff e8 3f f3 80 fc 0f 0b e8 38 f3 80 fc <0f> 0b 49 8d
87 80 00 00 00 4d 8d 87 84 00 00 00 48 89 85 20 fe
RIP: __skb_pull include/linux/skbuff.h:2073 [inline] RSP: ffff8801bc18f0f0
RIP: __ip6_make_skb+0x1ac8/0x2190 net/ipv6/ip6_output.c:1636 RSP:
ffff8801bc18f0f0
As stated by RFC 7112 section 5:
When a host fragments an IPv6 datagram, it MUST include the entire
IPv6 Header Chain in the First Fragment.
So this patch addresses the issue dropping datagrams with excessive
extheader length. It also updates the error path to report to the
calling socket nonnegative pmtu values.
The issue apparently predates git history.
v1 -> v2: cleanup error path, as per Eric's suggestion
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: syzbot+91e6f9932ff122fa4410(a)syzkaller.appspotmail.com
Signed-off-by: Paolo Abeni <pabeni(a)redhat.com>
Reviewed-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_output.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1245,7 +1245,7 @@ static int __ip6_append_data(struct sock
const struct sockcm_cookie *sockc)
{
struct sk_buff *skb, *skb_prev = NULL;
- unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu;
+ unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
int exthdrlen = 0;
int dst_exthdrlen = 0;
int hh_len;
@@ -1281,6 +1281,12 @@ static int __ip6_append_data(struct sock
sizeof(struct frag_hdr) : 0) +
rt->rt6i_nfheader_len;
+ /* as per RFC 7112 section 5, the entire IPv6 Header Chain must fit
+ * the first fragment
+ */
+ if (headersize + transhdrlen > mtu)
+ goto emsgsize;
+
if (cork->length + length > mtu - headersize && ipc6->dontfrag &&
(sk->sk_protocol == IPPROTO_UDP ||
sk->sk_protocol == IPPROTO_RAW)) {
@@ -1296,9 +1302,8 @@ static int __ip6_append_data(struct sock
if (cork->length + length > maxnonfragsize - headersize) {
emsgsize:
- ipv6_local_error(sk, EMSGSIZE, fl6,
- mtu - headersize +
- sizeof(struct ipv6hdr));
+ pmtu = max_t(int, mtu - headersize + sizeof(struct ipv6hdr), 0);
+ ipv6_local_error(sk, EMSGSIZE, fl6, pmtu);
return -EMSGSIZE;
}
Patches currently in stable-queue which might be from pabeni(a)redhat.com are
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
This is a note to let you know that I've just added the patch titled
lan78xx: Crash in lan78xx_writ_reg (Workqueue: events lan78xx_deferred_multicast_write)
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
lan78xx-crash-in-lan78xx_writ_reg-workqueue-events-lan78xx_deferred_multicast_write.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Raghuram Chary J <raghuramchary.jallipalli(a)microchip.com>
Date: Tue, 27 Mar 2018 14:51:16 +0530
Subject: lan78xx: Crash in lan78xx_writ_reg (Workqueue: events lan78xx_deferred_multicast_write)
From: Raghuram Chary J <raghuramchary.jallipalli(a)microchip.com>
[ Upstream commit 2d2d99ec13f62d5d2cecb6169dfdb6bbe05356d0 ]
Description:
Crash was reported with syzkaller pointing to lan78xx_write_reg routine.
Root-cause:
Proper cleanup of workqueues and init/setup routines was not happening
in failure conditions.
Fix:
Handled the error conditions by cleaning up the queues and init/setup
routines.
Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
Reported-by: Andrey Konovalov <andreyknvl(a)google.com>
Signed-off-by: Raghuram Chary J <raghuramchary.jallipalli(a)microchip.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/usb/lan78xx.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2863,8 +2863,7 @@ static int lan78xx_bind(struct lan78xx_n
if (ret < 0) {
netdev_warn(dev->net,
"lan78xx_setup_irq_domain() failed : %d", ret);
- kfree(pdata);
- return ret;
+ goto out1;
}
dev->net->hard_header_len += TX_OVERHEAD;
@@ -2872,14 +2871,32 @@ static int lan78xx_bind(struct lan78xx_n
/* Init all registers */
ret = lan78xx_reset(dev);
+ if (ret) {
+ netdev_warn(dev->net, "Registers INIT FAILED....");
+ goto out2;
+ }
ret = lan78xx_mdio_init(dev);
+ if (ret) {
+ netdev_warn(dev->net, "MDIO INIT FAILED.....");
+ goto out2;
+ }
dev->net->flags |= IFF_MULTICAST;
pdata->wol = WAKE_MAGIC;
return ret;
+
+out2:
+ lan78xx_remove_irq_domain(dev);
+
+out1:
+ netdev_warn(dev->net, "Bind routine FAILED");
+ cancel_work_sync(&pdata->set_multicast);
+ cancel_work_sync(&pdata->set_vlan);
+ kfree(pdata);
+ return ret;
}
static void lan78xx_unbind(struct lan78xx_net *dev, struct usb_interface *intf)
@@ -2891,6 +2908,8 @@ static void lan78xx_unbind(struct lan78x
lan78xx_remove_mdio(dev);
if (pdata) {
+ cancel_work_sync(&pdata->set_multicast);
+ cancel_work_sync(&pdata->set_vlan);
netif_dbg(dev, ifdown, dev->net, "free pdata");
kfree(pdata);
pdata = NULL;
Patches currently in stable-queue which might be from raghuramchary.jallipalli(a)microchip.com are
queue-4.14/lan78xx-crash-in-lan78xx_writ_reg-workqueue-events-lan78xx_deferred_multicast_write.patch
This is a note to let you know that I've just added the patch titled
ipv6: sr: fix seg6 encap performances with TSO enabled
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ipv6-sr-fix-seg6-encap-performances-with-tso-enabled.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: David Lebrun <dlebrun(a)google.com>
Date: Thu, 29 Mar 2018 17:59:36 +0100
Subject: ipv6: sr: fix seg6 encap performances with TSO enabled
From: David Lebrun <dlebrun(a)google.com>
[ Upstream commit 5807b22c9164a21cd1077a9bc587f0bba361f72d ]
Enabling TSO can lead to abysmal performances when using seg6 in
encap mode, such as with the ixgbe driver. This patch adds a call to
iptunnel_handle_offloads() to remove the encapsulation bit if needed.
Before:
root@comp4-seg6bpf:~# iperf3 -c fc00::55
Connecting to host fc00::55, port 5201
[ 4] local fc45::4 port 36592 connected to fc00::55 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 196 KBytes 1.60 Mbits/sec 47 6.66 KBytes
[ 4] 1.00-2.00 sec 304 KBytes 2.49 Mbits/sec 100 5.33 KBytes
[ 4] 2.00-3.00 sec 284 KBytes 2.32 Mbits/sec 92 5.33 KBytes
After:
root@comp4-seg6bpf:~# iperf3 -c fc00::55
Connecting to host fc00::55, port 5201
[ 4] local fc45::4 port 43062 connected to fc00::55 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.03 GBytes 8.89 Gbits/sec 0 743 KBytes
[ 4] 1.00-2.00 sec 1.03 GBytes 8.87 Gbits/sec 0 743 KBytes
[ 4] 2.00-3.00 sec 1.03 GBytes 8.87 Gbits/sec 0 743 KBytes
Reported-by: Tom Herbert <tom(a)quantonium.net>
Fixes: 6c8702c60b88 ("ipv6: sr: add support for SRH encapsulation and injection with lwtunnels")
Signed-off-by: David Lebrun <dlebrun(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/seg6_iptunnel.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
--- a/net/ipv6/seg6_iptunnel.c
+++ b/net/ipv6/seg6_iptunnel.c
@@ -16,6 +16,7 @@
#include <linux/net.h>
#include <linux/module.h>
#include <net/ip.h>
+#include <net/ip_tunnels.h>
#include <net/lwtunnel.h>
#include <net/netevent.h>
#include <net/netns/generic.h>
@@ -211,11 +212,6 @@ static int seg6_do_srh(struct sk_buff *s
tinfo = seg6_encap_lwtunnel(dst->lwtstate);
- if (likely(!skb->encapsulation)) {
- skb_reset_inner_headers(skb);
- skb->encapsulation = 1;
- }
-
switch (tinfo->mode) {
case SEG6_IPTUN_MODE_INLINE:
if (skb->protocol != htons(ETH_P_IPV6))
@@ -224,10 +220,12 @@ static int seg6_do_srh(struct sk_buff *s
err = seg6_do_srh_inline(skb, tinfo->srh);
if (err)
return err;
-
- skb_reset_inner_headers(skb);
break;
case SEG6_IPTUN_MODE_ENCAP:
+ err = iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6);
+ if (err)
+ return err;
+
if (skb->protocol == htons(ETH_P_IPV6))
proto = IPPROTO_IPV6;
else if (skb->protocol == htons(ETH_P_IP))
@@ -239,6 +237,8 @@ static int seg6_do_srh(struct sk_buff *s
if (err)
return err;
+ skb_set_inner_transport_header(skb, skb_transport_offset(skb));
+ skb_set_inner_protocol(skb, skb->protocol);
skb->protocol = htons(ETH_P_IPV6);
break;
case SEG6_IPTUN_MODE_L2ENCAP:
@@ -262,8 +262,6 @@ static int seg6_do_srh(struct sk_buff *s
ipv6_hdr(skb)->payload_len = htons(skb->len - sizeof(struct ipv6hdr));
skb_set_transport_header(skb, sizeof(struct ipv6hdr));
- skb_set_inner_protocol(skb, skb->protocol);
-
return 0;
}
Patches currently in stable-queue which might be from dlebrun(a)google.com are
queue-4.14/ipv6-sr-fix-seg6-encap-performances-with-tso-enabled.patch
This is a note to let you know that I've just added the patch titled
ipv6: sit: better validate user provided tunnel names
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ipv6-sit-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:28 -0700
Subject: ipv6: sit: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit b95211e066fc3494b7c115060b2297b4ba21f025 ]
Use dev_valid_name() to make sure user does not provide illegal
device name.
syzbot caught the following bug :
BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
BUG: KASAN: stack-out-of-bounds in ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
Write of size 33 at addr ffff8801b64076d8 by task syzkaller932654/4453
CPU: 0 PID: 4453 Comm: syzkaller932654 Not tainted 4.16.0+ #1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b9/0x29f lib/dump_stack.c:53
print_address_description+0x6c/0x20b mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
memcpy+0x37/0x50 mm/kasan/kasan.c:303
strlcpy include/linux/string.h:300 [inline]
ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
ipip6_tunnel_ioctl+0xe71/0x241b net/ipv6/sit.c:1221
dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
sock_ioctl+0x47e/0x680 net/socket.c:1015
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:500 [inline]
do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
SYSC_ioctl fs/ioctl.c:708 [inline]
SyS_ioctl+0x24/0x30 fs/ioctl.c:706
do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/sit.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -244,11 +244,13 @@ static struct ip_tunnel *ipip6_tunnel_lo
if (!create)
goto failed;
- if (parms->name[0])
+ if (parms->name[0]) {
+ if (!dev_valid_name(parms->name))
+ goto failed;
strlcpy(name, parms->name, IFNAMSIZ);
- else
+ } else {
strcpy(name, "sit%d");
-
+ }
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
ipip6_tunnel_setup);
if (!dev)
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
ip6_tunnel: better validate user provided tunnel names
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ip6_tunnel-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:30 -0700
Subject: ip6_tunnel: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit db7a65e3ab78e5b1c4b17c0870ebee35a4ee3257 ]
Use valid_name() to make sure user does not provide illegal
device name.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_tunnel.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -297,13 +297,16 @@ static struct ip6_tnl *ip6_tnl_create(st
struct net_device *dev;
struct ip6_tnl *t;
char name[IFNAMSIZ];
- int err = -ENOMEM;
+ int err = -E2BIG;
- if (p->name[0])
+ if (p->name[0]) {
+ if (!dev_valid_name(p->name))
+ goto failed;
strlcpy(name, p->name, IFNAMSIZ);
- else
+ } else {
sprintf(name, "ip6tnl%%d");
-
+ }
+ err = -ENOMEM;
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
ip6_tnl_dev_setup);
if (!dev)
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
ip_tunnel: better validate user provided tunnel names
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ip_tunnel-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:27 -0700
Subject: ip_tunnel: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 9cb726a212a82c88c98aa9f0037fd04777cd8fe5 ]
Use dev_valid_name() to make sure user does not provide illegal
device name.
syzbot caught the following bug :
BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
BUG: KASAN: stack-out-of-bounds in __ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
Write of size 20 at addr ffff8801ac79f810 by task syzkaller268107/4482
CPU: 0 PID: 4482 Comm: syzkaller268107 Not tainted 4.16.0+ #1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b9/0x29f lib/dump_stack.c:53
print_address_description+0x6c/0x20b mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
memcpy+0x37/0x50 mm/kasan/kasan.c:303
strlcpy include/linux/string.h:300 [inline]
__ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
ip_tunnel_create net/ipv4/ip_tunnel.c:352 [inline]
ip_tunnel_ioctl+0x818/0xd40 net/ipv4/ip_tunnel.c:861
ipip_tunnel_ioctl+0x1c5/0x420 net/ipv4/ipip.c:350
dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
sock_ioctl+0x47e/0x680 net/socket.c:1015
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:500 [inline]
do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
SYSC_ioctl fs/ioctl.c:708 [inline]
SyS_ioctl+0x24/0x30 fs/ioctl.c:706
do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv4/ip_tunnel.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
--- a/net/ipv4/ip_tunnel.c
+++ b/net/ipv4/ip_tunnel.c
@@ -253,13 +253,14 @@ static struct net_device *__ip_tunnel_cr
struct net_device *dev;
char name[IFNAMSIZ];
- if (parms->name[0])
+ err = -E2BIG;
+ if (parms->name[0]) {
+ if (!dev_valid_name(parms->name))
+ goto failed;
strlcpy(name, parms->name, IFNAMSIZ);
- else {
- if (strlen(ops->kind) > (IFNAMSIZ - 3)) {
- err = -E2BIG;
+ } else {
+ if (strlen(ops->kind) > (IFNAMSIZ - 3))
goto failed;
- }
strlcpy(name, ops->kind, IFNAMSIZ);
strncat(name, "%d", 2);
}
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
ip6_gre: better validate user provided tunnel names
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
ip6_gre-better-validate-user-provided-tunnel-names.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Eric Dumazet <edumazet(a)google.com>
Date: Thu, 5 Apr 2018 06:39:29 -0700
Subject: ip6_gre: better validate user provided tunnel names
From: Eric Dumazet <edumazet(a)google.com>
[ Upstream commit 5f42df013b8bc1b6511af7a04bf93b014884ae2a ]
Use dev_valid_name() to make sure user does not provide illegal
device name.
syzbot caught the following bug :
BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
BUG: KASAN: stack-out-of-bounds in ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
Write of size 20 at addr ffff8801afb9f7b8 by task syzkaller851048/4466
CPU: 1 PID: 4466 Comm: syzkaller851048 Not tainted 4.16.0+ #1
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b9/0x29f lib/dump_stack.c:53
print_address_description+0x6c/0x20b mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
check_memory_region_inline mm/kasan/kasan.c:260 [inline]
check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
memcpy+0x37/0x50 mm/kasan/kasan.c:303
strlcpy include/linux/string.h:300 [inline]
ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
ip6gre_tunnel_ioctl+0x69d/0x12e0 net/ipv6/ip6_gre.c:1195
dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
sock_ioctl+0x47e/0x680 net/socket.c:1015
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:500 [inline]
do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
SYSC_ioctl fs/ioctl.c:708 [inline]
SyS_ioctl+0x24/0x30 fs/ioctl.c:706
do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x42/0xb7
Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
Signed-off-by: Eric Dumazet <edumazet(a)google.com>
Reported-by: syzbot <syzkaller(a)googlegroups.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv6/ip6_gre.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -319,11 +319,13 @@ static struct ip6_tnl *ip6gre_tunnel_loc
if (t || !create)
return t;
- if (parms->name[0])
+ if (parms->name[0]) {
+ if (!dev_valid_name(parms->name))
+ return NULL;
strlcpy(name, parms->name, IFNAMSIZ);
- else
+ } else {
strcpy(name, "ip6gre%d");
-
+ }
dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN,
ip6gre_tunnel_setup);
if (!dev)
Patches currently in stable-queue which might be from edumazet(a)google.com are
queue-4.14/sctp-sctp_sockaddr_af-must-check-minimal-addr-length-for-af_inet6.patch
queue-4.14/net-fix-possible-out-of-bound-read-in-skb_network_protocol.patch
queue-4.14/pptp-remove-a-buggy-dst-release-in-pptp_connect.patch
queue-4.14/net-fool-proof-dev_valid_name.patch
queue-4.14/ipv6-the-entire-ipv6-header-chain-must-fit-the-first-fragment.patch
queue-4.14/vti6-better-validate-user-provided-tunnel-names.patch
queue-4.14/ipv6-sit-better-validate-user-provided-tunnel-names.patch
queue-4.14/ip6_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/sctp-do-not-leak-kernel-memory-to-user-space.patch
queue-4.14/ip_tunnel-better-validate-user-provided-tunnel-names.patch
queue-4.14/netlink-make-sure-nladdr-has-correct-size-in-netlink_connect.patch
queue-4.14/ip6_gre-better-validate-user-provided-tunnel-names.patch
This is a note to let you know that I've just added the patch titled
bonding: process the err returned by dev_set_allmulti properly in bond_enslave
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Mon, 26 Mar 2018 01:16:47 +0800
Subject: bonding: process the err returned by dev_set_allmulti properly in bond_enslave
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit 9f5a90c107741b864398f4ac0014711a8c1d8474 ]
When dev_set_promiscuity(1) succeeds but dev_set_allmulti(1) fails,
dev_set_promiscuity(-1) should be done before going to the err path.
Otherwise, dev->promiscuity will leak.
Fixes: 7e1a1ac1fbaa ("bonding: Check return of dev_set_promiscuity/allmulti")
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Acked-by: Andy Gospodarek <andy(a)greyhouse.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/bonding/bond_main.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1702,8 +1702,11 @@ int bond_enslave(struct net_device *bond
/* set allmulti level to new slave */
if (bond_dev->flags & IFF_ALLMULTI) {
res = dev_set_allmulti(slave_dev, 1);
- if (res)
+ if (res) {
+ if (bond_dev->flags & IFF_PROMISC)
+ dev_set_promiscuity(slave_dev, -1);
goto err_sysfs_del;
+ }
}
netif_addr_lock_bh(bond_dev);
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.14/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.14/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.14/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.14/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.14/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
bonding: move dev_mc_sync after master_upper_dev_link in bond_enslave
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Mon, 26 Mar 2018 01:16:46 +0800
Subject: bonding: move dev_mc_sync after master_upper_dev_link in bond_enslave
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit ae42cc62a9f07f1f6979054ed92606b9c30f4a2e ]
Beniamino found a crash when adding vlan as slave of bond which is also
the parent link:
ip link add bond1 type bond
ip link set bond1 up
ip link add link bond1 vlan1 type vlan id 80
ip link set vlan1 master bond1
The call trace is as below:
[<ffffffffa850842a>] queued_spin_lock_slowpath+0xb/0xf
[<ffffffffa8515680>] _raw_spin_lock+0x20/0x30
[<ffffffffa83f6f07>] dev_mc_sync+0x37/0x80
[<ffffffffc08687dc>] vlan_dev_set_rx_mode+0x1c/0x30 [8021q]
[<ffffffffa83efd2a>] __dev_set_rx_mode+0x5a/0xa0
[<ffffffffa83f7138>] dev_mc_sync_multiple+0x78/0x80
[<ffffffffc084127c>] bond_enslave+0x67c/0x1190 [bonding]
[<ffffffffa8401909>] do_setlink+0x9c9/0xe50
[<ffffffffa8403bf2>] rtnl_newlink+0x522/0x880
[<ffffffffa8403ff7>] rtnetlink_rcv_msg+0xa7/0x260
[<ffffffffa8424ecb>] netlink_rcv_skb+0xab/0xc0
[<ffffffffa83fe498>] rtnetlink_rcv+0x28/0x30
[<ffffffffa8424850>] netlink_unicast+0x170/0x210
[<ffffffffa8424bf8>] netlink_sendmsg+0x308/0x420
[<ffffffffa83cc396>] sock_sendmsg+0xb6/0xf0
This is actually a dead lock caused by sync slave hwaddr from master when
the master is the slave's 'slave'. This dead loop check is actually done
by netdev_master_upper_dev_link. However, Commit 1f718f0f4f97 ("bonding:
populate neighbour's private on enslave") moved it after dev_mc_sync.
This patch is to fix it by moving dev_mc_sync after master_upper_dev_link,
so that this loop check would be earlier than dev_mc_sync. It also moves
if (mode == BOND_MODE_8023AD) into if (!bond_uses_primary) clause as an
improvement.
Note team driver also has this issue, I will fix it in another patch.
Fixes: 1f718f0f4f97 ("bonding: populate neighbour's private on enslave")
Reported-by: Beniamino Galvani <bgalvani(a)redhat.com>
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Acked-by: Andy Gospodarek <andy(a)greyhouse.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/bonding/bond_main.c | 73 +++++++++++++++++++---------------------
1 file changed, 35 insertions(+), 38 deletions(-)
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1524,44 +1524,11 @@ int bond_enslave(struct net_device *bond
goto err_close;
}
- /* If the mode uses primary, then the following is handled by
- * bond_change_active_slave().
- */
- if (!bond_uses_primary(bond)) {
- /* set promiscuity level to new slave */
- if (bond_dev->flags & IFF_PROMISC) {
- res = dev_set_promiscuity(slave_dev, 1);
- if (res)
- goto err_close;
- }
-
- /* set allmulti level to new slave */
- if (bond_dev->flags & IFF_ALLMULTI) {
- res = dev_set_allmulti(slave_dev, 1);
- if (res)
- goto err_close;
- }
-
- netif_addr_lock_bh(bond_dev);
-
- dev_mc_sync_multiple(slave_dev, bond_dev);
- dev_uc_sync_multiple(slave_dev, bond_dev);
-
- netif_addr_unlock_bh(bond_dev);
- }
-
- if (BOND_MODE(bond) == BOND_MODE_8023AD) {
- /* add lacpdu mc addr to mc list */
- u8 lacpdu_multicast[ETH_ALEN] = MULTICAST_LACPDU_ADDR;
-
- dev_mc_add(slave_dev, lacpdu_multicast);
- }
-
res = vlan_vids_add_by_dev(slave_dev, bond_dev);
if (res) {
netdev_err(bond_dev, "Couldn't add bond vlan ids to %s\n",
slave_dev->name);
- goto err_hwaddr_unsync;
+ goto err_close;
}
prev_slave = bond_last_slave(bond);
@@ -1721,6 +1688,37 @@ int bond_enslave(struct net_device *bond
goto err_upper_unlink;
}
+ /* If the mode uses primary, then the following is handled by
+ * bond_change_active_slave().
+ */
+ if (!bond_uses_primary(bond)) {
+ /* set promiscuity level to new slave */
+ if (bond_dev->flags & IFF_PROMISC) {
+ res = dev_set_promiscuity(slave_dev, 1);
+ if (res)
+ goto err_sysfs_del;
+ }
+
+ /* set allmulti level to new slave */
+ if (bond_dev->flags & IFF_ALLMULTI) {
+ res = dev_set_allmulti(slave_dev, 1);
+ if (res)
+ goto err_sysfs_del;
+ }
+
+ netif_addr_lock_bh(bond_dev);
+ dev_mc_sync_multiple(slave_dev, bond_dev);
+ dev_uc_sync_multiple(slave_dev, bond_dev);
+ netif_addr_unlock_bh(bond_dev);
+
+ if (BOND_MODE(bond) == BOND_MODE_8023AD) {
+ /* add lacpdu mc addr to mc list */
+ u8 lacpdu_multicast[ETH_ALEN] = MULTICAST_LACPDU_ADDR;
+
+ dev_mc_add(slave_dev, lacpdu_multicast);
+ }
+ }
+
bond->slave_cnt++;
bond_compute_features(bond);
bond_set_carrier(bond);
@@ -1744,6 +1742,9 @@ int bond_enslave(struct net_device *bond
return 0;
/* Undo stages on error */
+err_sysfs_del:
+ bond_sysfs_slave_del(new_slave);
+
err_upper_unlink:
bond_upper_dev_unlink(bond, new_slave);
@@ -1764,10 +1765,6 @@ err_detach:
synchronize_rcu();
slave_disable_netpoll(new_slave);
-err_hwaddr_unsync:
- if (!bond_uses_primary(bond))
- bond_hw_addr_flush(bond_dev, slave_dev);
-
err_close:
slave_dev->priv_flags &= ~IFF_BONDING;
dev_close(slave_dev);
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.14/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.14/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.14/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.14/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.14/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
bonding: fix the err path for dev hwaddr sync in bond_enslave
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Xin Long <lucien.xin(a)gmail.com>
Date: Mon, 26 Mar 2018 01:16:45 +0800
Subject: bonding: fix the err path for dev hwaddr sync in bond_enslave
From: Xin Long <lucien.xin(a)gmail.com>
[ Upstream commit 5c78f6bfae2b10ff70e21d343e64584ea6280c26 ]
vlan_vids_add_by_dev is called right after dev hwaddr sync, so on
the err path it should unsync dev hwaddr. Otherwise, the slave
dev's hwaddr will never be unsync when this err happens.
Fixes: 1ff412ad7714 ("bonding: change the bond's vlan syncing functions with the standard ones")
Signed-off-by: Xin Long <lucien.xin(a)gmail.com>
Reviewed-by: Nikolay Aleksandrov <nikolay(a)cumulusnetworks.com>
Acked-by: Andy Gospodarek <andy(a)greyhouse.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/bonding/bond_main.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1561,7 +1561,7 @@ int bond_enslave(struct net_device *bond
if (res) {
netdev_err(bond_dev, "Couldn't add bond vlan ids to %s\n",
slave_dev->name);
- goto err_close;
+ goto err_hwaddr_unsync;
}
prev_slave = bond_last_slave(bond);
@@ -1751,9 +1751,6 @@ err_unregister:
netdev_rx_handler_unregister(slave_dev);
err_detach:
- if (!bond_uses_primary(bond))
- bond_hw_addr_flush(bond_dev, slave_dev);
-
vlan_vids_del_by_dev(slave_dev, bond_dev);
if (rcu_access_pointer(bond->primary_slave) == new_slave)
RCU_INIT_POINTER(bond->primary_slave, NULL);
@@ -1767,6 +1764,10 @@ err_detach:
synchronize_rcu();
slave_disable_netpoll(new_slave);
+err_hwaddr_unsync:
+ if (!bond_uses_primary(bond))
+ bond_hw_addr_flush(bond_dev, slave_dev);
+
err_close:
slave_dev->priv_flags &= ~IFF_BONDING;
dev_close(slave_dev);
Patches currently in stable-queue which might be from lucien.xin(a)gmail.com are
queue-4.14/team-move-dev_mc_sync-after-master_upper_dev_link-in-team_port_add.patch
queue-4.14/bonding-process-the-err-returned-by-dev_set_allmulti-properly-in-bond_enslave.patch
queue-4.14/bonding-fix-the-err-path-for-dev-hwaddr-sync-in-bond_enslave.patch
queue-4.14/bonding-move-dev_mc_sync-after-master_upper_dev_link-in-bond_enslave.patch
queue-4.14/route-check-sysctl_fib_multipath_use_neigh-earlier-than-hash.patch
This is a note to let you know that I've just added the patch titled
arp: fix arp_filter on l3slave devices
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
arp-fix-arp_filter-on-l3slave-devices.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 23:20:08 CEST 2018
From: Miguel Fadon Perlines <mfadon(a)teldat.com>
Date: Thu, 5 Apr 2018 10:25:38 +0200
Subject: arp: fix arp_filter on l3slave devices
From: Miguel Fadon Perlines <mfadon(a)teldat.com>
[ Upstream commit 58b35f27689b5eb514fc293c332966c226b1b6e4 ]
arp_filter performs an ip_route_output search for arp source address and
checks if output device is the same where the arp request was received,
if it is not, the arp request is not answered.
This route lookup is always done on main route table so l3slave devices
never find the proper route and arp is not answered.
Passing l3mdev_master_ifindex_rcu(dev) return value as oif fixes the
lookup for l3slave devices while maintaining same behavior for non
l3slave devices as this function returns 0 in that case.
Fixes: 613d09b30f8b ("net: Use VRF device index for lookups on TX")
Signed-off-by: Miguel Fadon Perlines <mfadon(a)teldat.com>
Acked-by: David Ahern <dsa(a)cumulusnetworks.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/ipv4/arp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -437,7 +437,7 @@ static int arp_filter(__be32 sip, __be32
/*unsigned long now; */
struct net *net = dev_net(dev);
- rt = ip_route_output(net, sip, tip, 0, 0);
+ rt = ip_route_output(net, sip, tip, 0, l3mdev_master_ifindex_rcu(dev));
if (IS_ERR(rt))
return 1;
if (rt->dst.dev != dev) {
Patches currently in stable-queue which might be from mfadon(a)teldat.com are
queue-4.14/arp-fix-arp_filter-on-l3slave-devices.patch
queue-4.14/vrf-fix-use-after-free-and-double-free-in-vrf_finish_output.patch
This is a note to let you know that I've just added the patch titled
mtd: nand: gpmi: Fix gpmi_nand_init() error path
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
mtd-nand-gpmi-fix-gpmi_nand_init-error-path.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 10:31:53 CEST 2018
From: Boris Brezillon <boris.brezillon(a)free-electrons.com>
Date: Mon, 10 Apr 2017 10:35:17 +0200
Subject: mtd: nand: gpmi: Fix gpmi_nand_init() error path
From: Boris Brezillon <boris.brezillon(a)free-electrons.com>
[ Upstream commit 4d02423e9afe6c46142ce98bbcaf5167316dbfbf ]
The GPMI driver is wrongly assuming that nand_release() can safely be
called on an uninitialized/unregistered NAND device.
Add a new err_nand_cleanup label in the error path and only execute if
nand_scan_tail() succeeded.
Note that we now call nand_cleanup() instead of nand_release()
(nand_release() is actually grouping the mtd_device_unregister() and
nand_cleanup() in one call) because there's no point in trying to
unregister a device that has never been registered.
Signed-off-by: Boris Brezillon <boris.brezillon(a)free-electrons.com>
Reviewed-by: Marek Vasut <marek.vasut(a)gmail.com>
Acked-by: Han Xu <han.xu(a)nxp.com>
Reviewed-by: Marek Vasut <marek.vasut(a)gmail.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
@@ -1949,19 +1949,21 @@ static int gpmi_nand_init(struct gpmi_na
ret = nand_boot_init(this);
if (ret)
- goto err_out;
+ goto err_nand_cleanup;
ret = chip->scan_bbt(mtd);
if (ret)
- goto err_out;
+ goto err_nand_cleanup;
ppdata.of_node = this->pdev->dev.of_node;
ret = mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0);
if (ret)
- goto err_out;
+ goto err_nand_cleanup;
return 0;
+err_nand_cleanup:
+ nand_cleanup(chip);
err_out:
- gpmi_nand_exit(this);
+ gpmi_free_dma_buffer(this);
return ret;
}
Patches currently in stable-queue which might be from boris.brezillon(a)free-electrons.com are
queue-4.4/mtd-nand-gpmi-fix-gpmi_nand_init-error-path.patch
This is a note to let you know that I've just added the patch titled
signal/arm: Document conflicts with SI_USER and SIGFPE
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 10:31:53 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Thu, 17 Aug 2017 17:07:46 -0500
Subject: signal/arm: Document conflicts with SI_USER and SIGFPE
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit 7771c66457004977b616bab785209f49d164f527 ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
that uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME, siginfo_layout will now return SIL_FAULT and the
appropriate fields will be reliably copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: Russell King <rmk(a)flint.arm.linux.org.uk>
Cc: linux-arm-kernel(a)lists.infradead.org
Ref: 451436b7bbb2 ("[ARM] Add support code for ARM hardware vector floating point")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/arm/include/uapi/asm/siginfo.h | 13 +++++++++++++
arch/arm/vfp/vfpmodule.c | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/include/uapi/asm/siginfo.h
--- /dev/null
+++ b/arch/arm/include/uapi/asm/siginfo.h
@@ -0,0 +1,13 @@
+#ifndef __ASM_SIGINFO_H
+#define __ASM_SIGINFO_H
+
+#include <asm-generic/siginfo.h>
+
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+#endif
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -261,7 +261,7 @@ static void vfp_raise_exceptions(u32 exc
if (exceptions == VFP_EXCEPTION_ERROR) {
vfp_panic("unhandled bounce", inst);
- vfp_raise_sigfpe(0, regs);
+ vfp_raise_sigfpe(FPE_FIXME, regs);
return;
}
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-4.4/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-4.4/pidns-disable-pid-allocation-if-pid_ns_prepare_proc-is-failed-in-alloc_pid.patch
queue-4.4/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-4.4/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
This is a note to let you know that I've just added the patch titled
signal/metag: Document a conflict with SI_USER with SIGFPE
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Mon Apr 9 10:16:32 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Tue, 1 Aug 2017 10:37:40 -0500
Subject: signal/metag: Document a conflict with SI_USER with SIGFPE
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit b80328be53c215346b153769267b38f531d89b4f ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
hat uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME siginfo_layout will now return SIL_FAULT and the
appropriate fields will reliably be copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: James Hogan <james.hogan(a)imgtec.com>
Cc: linux-metag(a)vger.kernel.org
Ref: ac919f0883e5 ("metag: Traps")
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/metag/include/uapi/asm/siginfo.h | 7 +++++++
arch/metag/kernel/traps.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
--- a/arch/metag/include/uapi/asm/siginfo.h
+++ b/arch/metag/include/uapi/asm/siginfo.h
@@ -6,4 +6,11 @@
#include <asm-generic/siginfo.h>
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
#endif
--- a/arch/metag/kernel/traps.c
+++ b/arch/metag/kernel/traps.c
@@ -735,7 +735,7 @@ TBIRES fpe_handler(TBIRES State, int Sig
else if (error_state & TXSTAT_FPE_INEXACT_BIT)
info.si_code = FPE_FLTRES;
else
- info.si_code = 0;
+ info.si_code = FPE_FIXME;
info.si_errno = 0;
info.si_addr = (__force void __user *)regs->ctx.CurrPC;
force_sig_info(SIGFPE, &info, current);
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-4.15/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-4.15/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-4.15/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
This is a note to let you know that I've just added the patch titled
clk: at91: fix clk-generated parenting
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
clk-at91-fix-clk-generated-parenting.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Mon Apr 9 17:09:24 CEST 2018
From: Alexandre Belloni <alexandre.belloni(a)free-electrons.com>
Date: Fri, 12 May 2017 16:25:30 +0200
Subject: clk: at91: fix clk-generated parenting
From: Alexandre Belloni <alexandre.belloni(a)free-electrons.com>
[ Upstream commit 8e56133e5c7b7a7a97f6a92d92f664d5ecd30745 ]
clk_generated_startup is called after clk_hw_register. So the first call to
get_parent will not have the correct value (i.e. 0) and because this is
cached, it may never be updated.
Signed-off-by: Alexandre Belloni <alexandre.belloni(a)free-electrons.com>
Fixes: df70aeef6083 ("clk: at91: add generated clock driver")
Signed-off-by: Stephen Boyd <sboyd(a)codeaurora.org>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/clk/at91/clk-generated.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/drivers/clk/at91/clk-generated.c
+++ b/drivers/clk/at91/clk-generated.c
@@ -260,13 +260,12 @@ at91_clk_register_generated(struct regma
gck->lock = lock;
gck->range = *range;
+ clk_generated_startup(gck);
hw = &gck->hw;
ret = clk_hw_register(NULL, &gck->hw);
if (ret) {
kfree(gck);
hw = ERR_PTR(ret);
- } else
- clk_generated_startup(gck);
return hw;
}
Patches currently in stable-queue which might be from alexandre.belloni(a)free-electrons.com are
queue-4.9/clk-at91-fix-clk-generated-parenting.patch
queue-4.9/rtc-interface-validate-alarm-time-before-handling-rollover.patch
queue-4.9/rtc-m41t80-fix-sqw-dividers-override-when-setting-a-date.patch
queue-4.9/rtc-snvs-fix-an-incorrect-check-of-return-value.patch
queue-4.9/rtc-opal-handle-disabled-tpo-in-opal_get_tpo_time.patch
I Sell Sure Spamming Toolz
What we have on Stock Daily
Inbox Webmail
Inbox SMTP
Fresh USA email leads
Fresh Canada email leads
Fresh Loan email leads
Fresh Business emails leads
Real Eastate email leads
Conference delegates email leads
Fresh Job Seaker emails
cPanel HTTP and HTTPs
Shell Zip/Unzipp
Mailer
RDP
All ScamPages
Bank ScamPage
Add me on whatsapp or call me
Watsapp: +2348107268246
Only Real buyers
The patch titled
Subject: resource: fix integer overflow at reallocation
has been added to the -mm tree. Its filename is
resource-fix-integer-overflow-at-reallocation-v1.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/resource-fix-integer-overflow-at-r…
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/resource-fix-integer-overflow-at-r…
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Takashi Iwai <tiwai(a)suse.de>
Subject: resource: fix integer overflow at reallocation
We've got a bug report indicating a kernel panic at booting on an x86-32
system, and it turned out to be the invalid PCI resource assigned after
reallocation. __find_resource() first aligns the resource start address
and resets the end address with start+size-1 accordingly, then checks
whether it's contained. Here the end address may overflow the integer,
although resource_contains() still returns true because the function
validates only start and end address. So this ends up with returning an
invalid resource (start > end).
There was already an attempt to cover such a problem in the commit
47ea91b4052d ("Resource: fix wrong resource window calculation"), but this
case is an overseen one.
This patch adds the validity check of the newly calculated resource for
avoiding the integer overflow problem.
Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1086739
Link: http://lkml.kernel.org/r/s5hpo37d5l8.wl-tiwai@suse.de
Fixes: 23c570a67448 ("resource: ability to resize an allocated resource")
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
Reported-by: Michael Henders <hendersm(a)shaw.ca>
Tested-by: Michael Henders <hendersm(a)shaw.ca>
Reviewed-by: Andrew Morton <akpm(a)linux-foundation.org>
Cc: Ram Pai <linuxram(a)us.ibm.com>
Cc: Bjorn Helgaas <bhelgaas(a)google.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
kernel/resource.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff -puN kernel/resource.c~resource-fix-integer-overflow-at-reallocation-v1 kernel/resource.c
--- a/kernel/resource.c~resource-fix-integer-overflow-at-reallocation-v1
+++ a/kernel/resource.c
@@ -651,7 +651,8 @@ static int __find_resource(struct resour
alloc.start = constraint->alignf(constraint->alignf_data, &avail,
size, constraint->align);
alloc.end = alloc.start + size - 1;
- if (resource_contains(&avail, &alloc)) {
+ if (alloc.start <= alloc.end &&
+ resource_contains(&avail, &alloc)) {
new->start = alloc.start;
new->end = alloc.end;
return 0;
_
Patches currently in -mm which might be from tiwai(a)suse.de are
resource-fix-integer-overflow-at-reallocation-v1.patch
resource-fix-integer-overflow-at-reallocation.patch
The patch titled
Subject: writeback: safer lock nesting
has been added to the -mm tree. Its filename is
writeback-safer-lock-nesting.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/writeback-safer-lock-nesting.patch
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/writeback-safer-lock-nesting.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Greg Thelen <gthelen(a)google.com>
Subject: writeback: safer lock nesting
lock_page_memcg()/unlock_page_memcg() use spin_lock_irqsave/restore() if
the page's memcg is undergoing move accounting, which occurs when a
process leaves its memcg for a new one that has
memory.move_charge_at_immigrate set.
unlocked_inode_to_wb_begin,end() use spin_lock_irq/spin_unlock_irq() if
the given inode is switching writeback domains. Switches occur when
enough writes are issued from a new domain.
This existing pattern is thus suspicious:
lock_page_memcg(page);
unlocked_inode_to_wb_begin(inode, &locked);
...
unlocked_inode_to_wb_end(inode, locked);
unlock_page_memcg(page);
If both inode switch and process memcg migration are both in-flight then
unlocked_inode_to_wb_end() will unconditionally enable interrupts while
still holding the lock_page_memcg() irq spinlock. This suggests the
possibility of deadlock if an interrupt occurs before unlock_page_memcg().
truncate
__cancel_dirty_page
lock_page_memcg
unlocked_inode_to_wb_begin
unlocked_inode_to_wb_end
<interrupts mistakenly enabled>
<interrupt>
end_page_writeback
test_clear_page_writeback
lock_page_memcg
<deadlock>
unlock_page_memcg
Due to configuration limitations this deadlock is not currently possible
because we don't mix cgroup writeback (a cgroupv2 feature) and
memory.move_charge_at_immigrate (a cgroupv1 feature).
If the kernel is hacked to always claim inode switching and memcg
moving_account, then this script triggers lockup in less than a minute:
cd /mnt/cgroup/memory
mkdir a b
echo 1 > a/memory.move_charge_at_immigrate
echo 1 > b/memory.move_charge_at_immigrate
(
echo $BASHPID > a/cgroup.procs
while true; do
dd if=/dev/zero of=/mnt/big bs=1M count=256
done
) &
while true; do
sync
done &
sleep 1h &
SLEEP=$!
while true; do
echo $SLEEP > a/cgroup.procs
echo $SLEEP > b/cgroup.procs
done
Given the deadlock is not currently possible, it's debatable if there's
any reason to modify the kernel. I suggest we should to prevent future
surprises.
Wang Long said "this deadlock occurs three times in our environment"
Change-Id: Ibb773e8045852978f6207074491d262f1b3fb613
Link: http://lkml.kernel.org/r/20180410005908.167976-1-gthelen@google.com
Signed-off-by: Greg Thelen <gthelen(a)google.com>
Reported-by: Wang Long <wanglong19(a)meituan.com>
Acked-by: Wang Long <wanglong19(a)meituan.com>
Reviewed-by: Andrew Morton <akpm(a)linux-foundation.org>
Cc: Wang Long <wanglong19(a)meituan.com>
Cc: Michal Hocko <mhocko(a)kernel.org>
Cc: Johannes Weiner <hannes(a)cmpxchg.org>
Cc: Tejun Heo <tj(a)kernel.org>
Cc: Nicholas Piggin <npiggin(a)gmail.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
fs/fs-writeback.c | 7 +++---
include/linux/backing-dev-defs.h | 5 ++++
include/linux/backing-dev.h | 30 +++++++++++++++--------------
mm/page-writeback.c | 18 ++++++++---------
4 files changed, 34 insertions(+), 26 deletions(-)
diff -puN fs/fs-writeback.c~writeback-safer-lock-nesting fs/fs-writeback.c
--- a/fs/fs-writeback.c~writeback-safer-lock-nesting
+++ a/fs/fs-writeback.c
@@ -745,11 +745,12 @@ int inode_congested(struct inode *inode,
*/
if (inode && inode_to_wb_is_valid(inode)) {
struct bdi_writeback *wb;
- bool locked, congested;
+ struct wb_lock_cookie lock_cookie;
+ bool congested;
- wb = unlocked_inode_to_wb_begin(inode, &locked);
+ wb = unlocked_inode_to_wb_begin(inode, &lock_cookie);
congested = wb_congested(wb, cong_bits);
- unlocked_inode_to_wb_end(inode, locked);
+ unlocked_inode_to_wb_end(inode, &lock_cookie);
return congested;
}
diff -puN include/linux/backing-dev-defs.h~writeback-safer-lock-nesting include/linux/backing-dev-defs.h
--- a/include/linux/backing-dev-defs.h~writeback-safer-lock-nesting
+++ a/include/linux/backing-dev-defs.h
@@ -223,6 +223,11 @@ static inline void set_bdi_congested(str
set_wb_congested(bdi->wb.congested, sync);
}
+struct wb_lock_cookie {
+ bool locked;
+ unsigned long flags;
+};
+
#ifdef CONFIG_CGROUP_WRITEBACK
/**
diff -puN include/linux/backing-dev.h~writeback-safer-lock-nesting include/linux/backing-dev.h
--- a/include/linux/backing-dev.h~writeback-safer-lock-nesting
+++ a/include/linux/backing-dev.h
@@ -346,7 +346,7 @@ static inline struct bdi_writeback *inod
/**
* unlocked_inode_to_wb_begin - begin unlocked inode wb access transaction
* @inode: target inode
- * @lockedp: temp bool output param, to be passed to the end function
+ * @cookie: output param, to be passed to the end function
*
* The caller wants to access the wb associated with @inode but isn't
* holding inode->i_lock, mapping->tree_lock or wb->list_lock. This
@@ -354,12 +354,11 @@ static inline struct bdi_writeback *inod
* association doesn't change until the transaction is finished with
* unlocked_inode_to_wb_end().
*
- * The caller must call unlocked_inode_to_wb_end() with *@lockdep
- * afterwards and can't sleep during transaction. IRQ may or may not be
- * disabled on return.
+ * The caller must call unlocked_inode_to_wb_end() with *@cookie afterwards and
+ * can't sleep during transaction. IRQ may or may not be disabled on return.
*/
static inline struct bdi_writeback *
-unlocked_inode_to_wb_begin(struct inode *inode, bool *lockedp)
+unlocked_inode_to_wb_begin(struct inode *inode, struct wb_lock_cookie *cookie)
{
rcu_read_lock();
@@ -367,10 +366,10 @@ unlocked_inode_to_wb_begin(struct inode
* Paired with store_release in inode_switch_wb_work_fn() and
* ensures that we see the new wb if we see cleared I_WB_SWITCH.
*/
- *lockedp = smp_load_acquire(&inode->i_state) & I_WB_SWITCH;
+ cookie->locked = smp_load_acquire(&inode->i_state) & I_WB_SWITCH;
- if (unlikely(*lockedp))
- spin_lock_irq(&inode->i_mapping->tree_lock);
+ if (unlikely(cookie->locked))
+ spin_lock_irqsave(&inode->i_mapping->tree_lock, cookie->flags);
/*
* Protected by either !I_WB_SWITCH + rcu_read_lock() or tree_lock.
@@ -382,12 +381,14 @@ unlocked_inode_to_wb_begin(struct inode
/**
* unlocked_inode_to_wb_end - end inode wb access transaction
* @inode: target inode
- * @locked: *@lockedp from unlocked_inode_to_wb_begin()
+ * @cookie: @cookie from unlocked_inode_to_wb_begin()
*/
-static inline void unlocked_inode_to_wb_end(struct inode *inode, bool locked)
+static inline void unlocked_inode_to_wb_end(struct inode *inode,
+ struct wb_lock_cookie *cookie)
{
- if (unlikely(locked))
- spin_unlock_irq(&inode->i_mapping->tree_lock);
+ if (unlikely(cookie->locked))
+ spin_unlock_irqrestore(&inode->i_mapping->tree_lock,
+ cookie->flags);
rcu_read_unlock();
}
@@ -434,12 +435,13 @@ static inline struct bdi_writeback *inod
}
static inline struct bdi_writeback *
-unlocked_inode_to_wb_begin(struct inode *inode, bool *lockedp)
+unlocked_inode_to_wb_begin(struct inode *inode, struct wb_lock_cookie *cookie)
{
return inode_to_wb(inode);
}
-static inline void unlocked_inode_to_wb_end(struct inode *inode, bool locked)
+static inline void unlocked_inode_to_wb_end(struct inode *inode,
+ struct wb_lock_cookie *cookie)
{
}
diff -puN mm/page-writeback.c~writeback-safer-lock-nesting mm/page-writeback.c
--- a/mm/page-writeback.c~writeback-safer-lock-nesting
+++ a/mm/page-writeback.c
@@ -2501,13 +2501,13 @@ void account_page_redirty(struct page *p
if (mapping && mapping_cap_account_dirty(mapping)) {
struct inode *inode = mapping->host;
struct bdi_writeback *wb;
- bool locked;
+ struct wb_lock_cookie cookie = {0};
- wb = unlocked_inode_to_wb_begin(inode, &locked);
+ wb = unlocked_inode_to_wb_begin(inode, &cookie);
current->nr_dirtied--;
dec_node_page_state(page, NR_DIRTIED);
dec_wb_stat(wb, WB_DIRTIED);
- unlocked_inode_to_wb_end(inode, locked);
+ unlocked_inode_to_wb_end(inode, &cookie);
}
}
EXPORT_SYMBOL(account_page_redirty);
@@ -2613,15 +2613,15 @@ void __cancel_dirty_page(struct page *pa
if (mapping_cap_account_dirty(mapping)) {
struct inode *inode = mapping->host;
struct bdi_writeback *wb;
- bool locked;
+ struct wb_lock_cookie cookie = {0};
lock_page_memcg(page);
- wb = unlocked_inode_to_wb_begin(inode, &locked);
+ wb = unlocked_inode_to_wb_begin(inode, &cookie);
if (TestClearPageDirty(page))
account_page_cleaned(page, mapping, wb);
- unlocked_inode_to_wb_end(inode, locked);
+ unlocked_inode_to_wb_end(inode, &cookie);
unlock_page_memcg(page);
} else {
ClearPageDirty(page);
@@ -2653,7 +2653,7 @@ int clear_page_dirty_for_io(struct page
if (mapping && mapping_cap_account_dirty(mapping)) {
struct inode *inode = mapping->host;
struct bdi_writeback *wb;
- bool locked;
+ struct wb_lock_cookie cookie = {0};
/*
* Yes, Virginia, this is indeed insane.
@@ -2690,14 +2690,14 @@ int clear_page_dirty_for_io(struct page
* always locked coming in here, so we get the desired
* exclusion.
*/
- wb = unlocked_inode_to_wb_begin(inode, &locked);
+ wb = unlocked_inode_to_wb_begin(inode, &cookie);
if (TestClearPageDirty(page)) {
dec_lruvec_page_state(page, NR_FILE_DIRTY);
dec_zone_page_state(page, NR_ZONE_WRITE_PENDING);
dec_wb_stat(wb, WB_RECLAIMABLE);
ret = 1;
}
- unlocked_inode_to_wb_end(inode, locked);
+ unlocked_inode_to_wb_end(inode, &cookie);
return ret;
}
return TestClearPageDirty(page);
_
Patches currently in -mm which might be from gthelen(a)google.com are
writeback-safer-lock-nesting.patch
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 00f3ca2c2d66 mm: memcontrol: per-lruvec stats infrastructure.
The bot has also determined it's probably a bug fixing patch. (score: 40.3266)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33.
v4.16.1: Build OK!
v4.15.16: Failed to apply! Possible dependencies:
a983b5ebee57 ("mm: memcontrol: fix excessive complexity in memory.stat reporting")
v4.14.33: Failed to apply! Possible dependencies:
a983b5ebee57 ("mm: memcontrol: fix excessive complexity in memory.stat reporting")
--
Thanks,
Sasha
This is a note to let you know that I've just added the patch titled
fix race in drivers/char/random.c:get_reg()
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
fix-race-in-drivers-char-random.c-get_reg.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Mon Apr 9 17:09:24 CEST 2018
From: Michael Schmitz <schmitzmic(a)gmail.com>
Date: Sun, 30 Apr 2017 19:49:21 +1200
Subject: fix race in drivers/char/random.c:get_reg()
From: Michael Schmitz <schmitzmic(a)gmail.com>
[ Upstream commit 9dfa7bba35ac08a63565d58c454dccb7e1bb0a08 ]
get_reg() can be reentered on architectures with prioritized interrupts
(m68k in this case), causing f->reg_index to be incremented after the
range check. Out of bounds memory access past the pt_regs struct results.
This will go mostly undetected unless access is beyond end of memory.
Prevent the race by disabling interrupts in get_reg().
Tested on m68k (Atari Falcon, and ARAnyM emulator).
Kudos to Geert Uytterhoeven for helping to trace this race.
Signed-off-by: Michael Schmitz <schmitzmic(a)gmail.com>
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/char/random.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1115,12 +1115,16 @@ static void add_interrupt_bench(cycles_t
static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs)
{
__u32 *ptr = (__u32 *) regs;
+ unsigned long flags;
if (regs == NULL)
return 0;
+ local_irq_save(flags);
if (f->reg_idx >= sizeof(struct pt_regs) / sizeof(__u32))
f->reg_idx = 0;
- return *(ptr + f->reg_idx++);
+ ptr += f->reg_idx++;
+ local_irq_restore(flags);
+ return *ptr;
}
void add_interrupt_randomness(int irq, int irq_flags)
Patches currently in stable-queue which might be from schmitzmic(a)gmail.com are
queue-4.9/fix-race-in-drivers-char-random.c-get_reg.patch
Tree/Branch: v4.1.51
Git describe: v4.1.51
Commit: 2d61e08a10 Linux 4.1.51
Build Time: 0 min 17 sec
Passed: 0 / 11 ( 0.00 %)
Failed: 11 / 11 (100.00 %)
Errors: 918
Warnings: 172
Section Mismatches: 0
Failed defconfigs:
arm64-allnoconfig
arm64-allmodconfig
arm-multi_v5_defconfig
arm-multi_v7_defconfig
x86_64-defconfig
arm-allmodconfig
arm-allnoconfig
x86_64-allnoconfig
arm-multi_v4t_defconfig
x86_64-allmodconfig
arm64-defconfig
Errors:
arm64-allnoconfig
../include/linux/thread_info.h:128:2: error: implicit declaration of function 'WARN_ON' [-Werror=implicit-function-declaration]
../arch/arm64/include/asm/arch_timer.h:113:2: error: implicit declaration of function 'BUG' [-Werror=implicit-function-declaration]
../include/linux/kref.h:47:2: error: implicit declaration of function 'WARN_ON_ONCE' [-Werror=implicit-function-declaration]
../include/linux/dma-attrs.h:54:2: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
../include/linux/jump_label.h:60:32: error: implicit declaration of function 'WARN' [-Werror=implicit-function-declaration]
arm64-allmodconfig
../include/linux/mmdebug.h:17:25: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
arm-multi_v5_defconfig
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../net/core/sock.c:708:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:906:7: error: 'SO_ATTACH_BPF' undeclared (first use in this function)
../net/core/sock.c:923:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:962:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:967:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:980:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1055:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:1213:7: error: 'SO_GET_FILTER' undeclared (first use in this function)
../net/core/sock.c:1220:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:1224:7: error: 'SO_BPF_EXTENSIONS' undeclared (first use in this function)
../net/core/sock.c:1228:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:1233:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:1238:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1242:7: error: 'SO_INCOMING_CPU' undeclared (first use in this function)
../kernel/profile.c:106:14: error: '_etext' undeclared (first use in this function)
../kernel/profile.c:106:23: error: '_stext' undeclared (first use in this function)
../kernel/profile.c:396:45: error: '_stext' undeclared (first use in this function)
../kernel/module.c:907:35: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/sunrpc/xprtsock.c:1635:38: error: 'SO_REUSEPORT' undeclared (first use in this function)
arm-multi_v7_defconfig
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:96:20: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1302:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1302:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1575:35: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1800:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1800:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:2026:16: error: '__per_cpu_load' undeclared (first use in this function)
../mm/percpu.c:2228:57: error: '__per_cpu_start' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/module.c:907:35: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../kernel/kexec.c:1950:20: error: '_stext' undeclared (first use in this function)
../net/core/sock.c:708:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:906:7: error: 'SO_ATTACH_BPF' undeclared (first use in this function)
../net/core/sock.c:923:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:962:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:967:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:980:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1055:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:1213:7: error: 'SO_GET_FILTER' undeclared (first use in this function)
../net/core/sock.c:1220:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:1224:7: error: 'SO_BPF_EXTENSIONS' undeclared (first use in this function)
../net/core/sock.c:1228:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:1233:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:1238:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1242:7: error: 'SO_INCOMING_CPU' undeclared (first use in this function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/sunrpc/xprtsock.c:1635:38: error: 'SO_REUSEPORT' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../drivers/net/usb/cdc_ether.c:76:19: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:77:6: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:84:17: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:86:17: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:90:4: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:170:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:176:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/cdc_ether.c:182:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:190:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/net/usb/cdc_ether.c:199:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:205:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ether.c:257:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:263:19: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ether.c:274:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:282:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/cdc_ether.c:288:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:296:14: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/cdc_ether.c:362:17: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:439:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:450:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:455:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:461:4: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:538:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:539:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:626:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:163:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:169:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/zaurus.c:182:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:188:18: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/zaurus.c:268:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:269:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:319:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/cdc_ncm.c:153:8: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:176:60: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:346:29: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:408:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_ncm.c:410:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ncm_desc'
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:435:37: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ncm.c:448:29: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:459:27: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:461:31: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:464:12: error: 'USB_CDC_NCM_CRC_NOT_APPENDED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:476:7: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:478:31: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:481:12: error: 'USB_CDC_NCM_NTB16_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:507:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:507:94: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:530:29: error: 'USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:534:29: error: 'USB_CDC_GET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:546:30: error: 'USB_CDC_SET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:558:49: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_extended_desc'
../drivers/net/usb/cdc_ncm.c:577:13: error: 'USB_CDC_NCM_NDP_ALIGN_MIN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:757:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:758:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ncm.c:772:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:780:8: error: 'USB_CDC_NCM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:787:8: error: 'USB_CDC_MBIM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:794:8: error: 'USB_CDC_MBIM_EXTENDED_TYPE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1029:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1034:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1091:70: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1091:108: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:36: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1145:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1145:64: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1296:56: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1319:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1320:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1327:11: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1327:40: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1364:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1378:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1379:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1382:14: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1383:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1418:40: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1426:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1427:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1480:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1507:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1520:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1532:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1534:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1538:19: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1592:26: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_ncm.c:1593:26: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
x86_64-defconfig
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:196:18: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:8: error: 'RTIT_CTL_TOPA' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:24: error: 'RTIT_CTL_BRANCH_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:45: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:206:10: error: 'RTIT_CTL_OS' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:208:10: error: 'RTIT_CTL_USR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:221:10: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:519:15: error: 'RTIT_STATUS_ERROR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:525:15: error: 'RTIT_STATUS_STOPPED' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:1071:22: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
arm-allmodconfig
../init/main.c:685:32: error: '__ctors_start' undeclared (first use in this function)
../init/main.c:687:28: error: '__ctors_end' undeclared (first use in this function)
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:583:25: error: '_stext' undeclared here (not in a function)
../arch/arm/mm/init.c:589:27: error: '__init_begin' undeclared here (not in a function)
../arch/arm/mm/init.c:590:25: error: '_sdata' undeclared here (not in a function)
../arch/arm/mm/init.c:597:28: error: '__start_rodata' undeclared here (not in a function)
../arch/arm/mm/init.c:609:13: error: initializer element is not constant
../arch/arm/mm/init.c:610:13: error: initializer element is not constant
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/hibernate.c:29:48: error: '__nosave_begin' undeclared (first use in this function)
../arch/arm/kernel/hibernate.c:30:46: error: '__nosave_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:96:20: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1302:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1302:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1575:35: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1800:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1800:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:2026:16: error: '__per_cpu_load' undeclared (first use in this function)
../mm/percpu.c:2228:57: error: '__per_cpu_start' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../mm/kmemleak.c:1334:13: error: '_sdata' undeclared (first use in this function)
../mm/kmemleak.c:1334:21: error: '_edata' undeclared (first use in this function)
../mm/kmemleak.c:1335:13: error: '__bss_start' undeclared (first use in this function)
../mm/kmemleak.c:1335:26: error: '__bss_stop' undeclared (first use in this function)
../mm/kmemleak.c:1340:14: error: '__per_cpu_start' undeclared (first use in this function)
../mm/kmemleak.c:1341:7: error: '__per_cpu_end' undeclared (first use in this function)
../kernel/locking/lockdep.c:612:41: error: '_stext' undeclared (first use in this function)
../kernel/locking/lockdep.c:613:34: error: '_end' undeclared (first use in this function)
../kernel/locking/lockdep.c:622:6: error: implicit declaration of function 'arch_is_kernel_data' [-Werror=implicit-function-declaration]
../kernel/profile.c:106:14: error: '_etext' undeclared (first use in this function)
../kernel/profile.c:106:23: error: '_stext' undeclared (first use in this function)
../kernel/profile.c:287:32: error: '_stext' undeclared (first use in this function)
../kernel/module.c:907:35: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../kernel/kexec.c:1950:20: error: '_stext' undeclared (first use in this function)
../net/core/sock.c:708:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:906:7: error: 'SO_ATTACH_BPF' undeclared (first use in this function)
../net/core/sock.c:923:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:962:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:967:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:980:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1055:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:1213:7: error: 'SO_GET_FILTER' undeclared (first use in this function)
../net/core/sock.c:1220:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:1224:7: error: 'SO_BPF_EXTENSIONS' undeclared (first use in this function)
../net/core/sock.c:1228:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:1233:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:1238:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1242:7: error: 'SO_INCOMING_CPU' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:52:35: error: 'SCTP_CONNTRACK_MAX' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: 'SCTP_CONNTRACK_CLOSED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: 'SCTP_CONNTRACK_COOKIE_WAIT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: 'SCTP_CONNTRACK_COOKIE_ECHOED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: 'SCTP_CONNTRACK_ESTABLISHED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: 'SCTP_CONNTRACK_SHUTDOWN_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: 'SCTP_CONNTRACK_SHUTDOWN_RECD' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: 'SCTP_CONNTRACK_SHUTDOWN_ACK_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:180:22: error: storage size of 'state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:237:26: error: parameter 2 ('cur_state') has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:236:12: error: function declaration isn't a prototype [-Werror=strict-prototypes]
../net/netfilter/nf_conntrack_proto_sctp.c:310:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:310:33: error: storage size of 'old_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:337:26: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../net/netfilter/nf_conntrack_proto_sctp.c:415:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:441:9: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../lib/dma-debug.c:1184:25: error: '_stext' undeclared (first use in this function)
../lib/dma-debug.c:1184:33: error: '_etext' undeclared (first use in this function)
../lib/dma-debug.c:1185:25: error: '__start_rodata' undeclared (first use in this function)
../lib/dma-debug.c:1185:41: error: '__end_rodata' undeclared (first use in this function)
../drivers/hwtracing/coresight/coresight-etm3x.c:1769:32: error: '_stext' undeclared (first use in this function)
../drivers/hwtracing/coresight/coresight-etm3x.c:1770:32: error: '_etext' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../net/sunrpc/xprtsock.c:1635:38: error: 'SO_REUSEPORT' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1638:26: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1647:41: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1677:17: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1771:25: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1776:5: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1779:18: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1788:5: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:2134:6: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/input/misc/ims-pcu.c:2135:6: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/misc/kgdbts.c:226:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../arch/arm/include/asm/parport.h:12:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'parport_pc_find_isa_ports'
../arch/arm/include/asm/parport.h:13:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'parport_pc_find_nonpci_ports'
../drivers/parport/parport_pc.c:3066:2: error: implicit declaration of function 'parport_pc_find_nonpci_ports' [-Werror=implicit-function-declaration]
../drivers/net/usb/r8152.c:4091:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/r8152.c:4092:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/hso.c:1795:14: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1807:24: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/hso.c:1852:7: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1921:7: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:76:19: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:77:6: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:84:17: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:86:17: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:90:4: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:170:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:176:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/cdc_ether.c:182:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:190:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/net/usb/cdc_ether.c:199:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:205:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ether.c:257:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:263:19: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ether.c:274:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:282:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/cdc_ether.c:288:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:296:14: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/cdc_ether.c:362:17: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:439:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:450:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:455:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:461:4: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:538:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:539:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:626:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:357:37: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:358:4: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/net/usb/rndis_host.c:106:30: error: storage size of 'notification' isn't known
../drivers/net/usb/rndis_host.c:130:3: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/rndis_host.c:157:4: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:163:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:169:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/zaurus.c:182:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:188:18: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/zaurus.c:268:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:269:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:319:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/cdc-phonet.c:355:9: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc-phonet.c:373:50: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/sierra_net.c:340:33: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:504:5: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:611:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/sierra_net.c:617:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:618:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:621:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/cdc_ncm.c:153:8: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:176:60: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:346:29: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:408:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_ncm.c:410:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ncm_desc'
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:435:37: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ncm.c:448:29: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:459:27: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:461:31: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:464:12: error: 'USB_CDC_NCM_CRC_NOT_APPENDED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:476:7: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:478:31: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:481:12: error: 'USB_CDC_NCM_NTB16_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:507:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:507:94: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:530:29: error: 'USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:534:29: error: 'USB_CDC_GET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:546:30: error: 'USB_CDC_SET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:558:49: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_extended_desc'
../drivers/net/usb/cdc_ncm.c:577:13: error: 'USB_CDC_NCM_NDP_ALIGN_MIN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:757:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:758:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ncm.c:772:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:780:8: error: 'USB_CDC_NCM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:787:8: error: 'USB_CDC_MBIM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:794:8: error: 'USB_CDC_MBIM_EXTENDED_TYPE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1029:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1034:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1091:70: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1091:108: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:36: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1145:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1145:64: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1296:56: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1319:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1320:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1327:11: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1327:40: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1364:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1378:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1379:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1382:14: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1383:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1418:40: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1426:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1427:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1480:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1507:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1520:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1532:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1534:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1538:19: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1592:26: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_ncm.c:1593:26: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/lg-vl600.c:332:5: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/lg-vl600.c:332:32: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:255:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:260:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/qmi_wwan.c:266:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:271:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:278:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:283:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:307:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:319:28: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:500:33: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:501:33: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:171:34: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_mbim.c:225:28: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:281:23: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:438:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_mbim.c:439:19: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:446:19: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:459:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:460:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:593:39: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:593:61: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:597:58: error: 'USB_CDC_SUBCLASS_MBIM' undeclared here (not in a function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:52:61: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:57:15: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:493:26: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:14: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:580:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:581:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:584:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:587:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:601:24: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:602:34: error: implicit declaration of function 'macvtap16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/macvtap.c:622:29: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:631:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:633:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:635:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:639:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:641:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:644:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:653:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:670:9: error: variable 'vnet_hdr' has initializer but incomplete type
../drivers/net/macvtap.c:670:24: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:690:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:811:25: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:1077:23: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/staging/gdm724x/gdm_usb.c:39:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/staging/gdm724x/gdm_mux.c:41:24: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:209:56: error: unknown type name '__virtio16'
../drivers/net/tun.c:214:15: error: unknown type name '__virtio16'
../drivers/net/tun.c:1041:9: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1041:24: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1068:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1069:7: error: implicit declaration of function 'tun16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/tun.c:1170:22: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1172:27: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1173:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1176:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1179:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1274:10: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1274:25: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1285:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1287:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1289:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1303:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1305:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1308:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1313:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:1653:29: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/tun.c:2043:33: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:154:34: error: field 'hdr' has incomplete type
../drivers/net/virtio_net.c:269:27: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:360:16: error: implicit declaration of function 'virtio16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:480:23: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:486:30: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:494:27: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:496:32: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:497:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:500:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:503:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:613:32: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:787:21: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:872:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:873:25: error: implicit declaration of function 'cpu_to_virtio16' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:887:24: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:889:24: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:891:24: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:895:25: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:897:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:987:29: error: storage size of 'ctrl' isn't known
../drivers/net/virtio_net.c:988:2: error: unknown type name 'virtio_net_ctrl_ack'
../drivers/net/virtio_net.c:992:10: error: implicit declaration of function 'virtio_has_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:992:39: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1011:20: error: 'VIRTIO_NET_OK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1035:31: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1037:33: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1038:8: error: 'VIRTIO_NET_CTRL_MAC_ADDR_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1043:38: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1044:32: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1049:4: error: implicit declaration of function 'virtio_cwrite8' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1050:28: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1111:32: error: 'VIRTIO_NET_CTRL_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1112:7: error: 'VIRTIO_NET_CTRL_ANNOUNCE_ACK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1120:28: error: storage size of 's' isn't known
../drivers/net/virtio_net.c:1123:52: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1129:32: error: 'VIRTIO_NET_CTRL_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1130:7: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1171:36: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1179:32: error: 'VIRTIO_NET_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1180:7: error: 'VIRTIO_NET_CTRL_RX_PROMISC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1187:7: error: 'VIRTIO_NET_CTRL_RX_ALLMULTI' undeclared (first use in this function)
../drivers/net/virtio_net.c:1195:29: error: dereferencing pointer to incomplete type 'struct virtio_net_ctrl_mac'
../drivers/net/virtio_net.c:1203:22: error: implicit declaration of function 'cpu_to_virtio32' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1222:32: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1223:7: error: 'VIRTIO_NET_CTRL_MAC_TABLE_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1237:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1238:7: error: 'VIRTIO_NET_CTRL_VLAN_ADD' undeclared (first use in this function)
../drivers/net/virtio_net.c:1251:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1252:7: error: 'VIRTIO_NET_CTRL_VLAN_DEL' undeclared (first use in this function)
../drivers/net/virtio_net.c:1263:4: error: implicit declaration of function 'virtqueue_set_affinity' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1338:26: error: implicit declaration of function 'virtio_bus_name' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:6: error: implicit declaration of function 'virtio_cread_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:37: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1432:6: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1435:10: error: 'VIRTIO_NET_S_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1441:7: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:1529:14: error: dereferencing pointer to incomplete type 'const struct virtio_config_ops'
../drivers/net/virtio_net.c:1536:2: error: unknown type name 'vq_callback_t'
../drivers/net/virtio_net.c:1547:36: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1583:36: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1709:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1710:29: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1712:29: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1714:29: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1716:29: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1717:29: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1742:35: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1743:8: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1747:31: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1748:24: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1749:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1766:31: error: 'VIRTIO_NET_F_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1772:32: error: 'VIRTIO_NET_F_GSO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1777:32: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1779:32: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1781:32: error: 'VIRTIO_NET_F_HOST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1783:32: error: 'VIRTIO_NET_F_HOST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1792:31: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1798:31: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1799:3: error: implicit declaration of function 'virtio_cread_bytes' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1800:24: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1825:31: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1826:31: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1827:31: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1828:31: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1831:31: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared (first use in this function)
../drivers/net/virtio_net.c:1835:31: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1836:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:1838:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/virtio_net.c:1840:31: error: 'VIRTIO_F_ANY_LAYOUT' undeclared (first use in this function)
../drivers/net/virtio_net.c:1872:2: error: implicit declaration of function 'virtio_device_ready' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1896:35: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1900:16: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:2015:4: error: 'VIRTIO_ID_NET' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: 'VIRTIO_NET_F_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2020:21: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:21: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:2: error: 'VIRTIO_NET_F_GSO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:20: error: 'VIRTIO_NET_F_MAC' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:20: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:2: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:26: error: 'VIRTIO_NET_F_HOST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:49: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:49: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:2: error: 'VIRTIO_NET_F_HOST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:25: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:25: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:50: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:50: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:2: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:26: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:2: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:26: error: 'VIRTIO_NET_F_STATUS' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:47: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:47: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:2: error: 'VIRTIO_NET_F_CTRL_RX' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:24: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:24: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:2: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:31: error: 'VIRTIO_NET_F_MQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:31: error: initializer element is not constant
../drivers/net/virtio_net.c:2028:2: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared here (not in a function)
../drivers/net/virtio_net.c:2028:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2029:2: error: 'VIRTIO_F_ANY_LAYOUT' undeclared here (not in a function)
../drivers/net/virtio_net.c:2029:2: error: initializer element is not constant
../drivers/usb/class/cdc-acm.h:104:29: error: field 'line' has incomplete type
../drivers/usb/class/cdc-acm.c:156:27: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:310:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:311:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:312:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:317:7: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:547:31: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:163:20: error: 'USB_CDC_REQ_SEND_BREAK' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:984:29: error: storage size of 'newline' isn't known
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1166:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1167:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1176:8: error: 'USB_CDC_COUNTRY_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1177:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:1181:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1183:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1188:8: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1230:60: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1345:22: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1437:35: error: dereferencing pointer to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1668:19: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1669:3: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1883:3: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1887:3: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1889:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1891:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101_WAKE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1893:3: error: 'USB_CDC_ACM_PROTO_AT_GSM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1895:3: error: 'USB_CDC_ACM_PROTO_AT_3G' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1897:3: error: 'USB_CDC_ACM_PROTO_AT_CDMA' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:41:25: error: 'USB_CDC_SUBCLASS_DMM' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:238:34: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:244:10: error: switch quantity not an integer
../drivers/usb/class/cdc-wdm.c:245:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:251:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:255:6: error: request for member 'wValue' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:257:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:265:6: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:405:18: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:824:24: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:892:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:894:8: error: 'USB_CDC_DMM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:896:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_dmm_desc'
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:60:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:105:23: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:106:23: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:133:15: error: variable 'acm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:134:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:134:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_acm.c:135:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:137:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_acm.c:141:1: error: variable 'acm_call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:142:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:142:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:143:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:145:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:149:15: error: variable 'acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:150:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:150:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_acm.c:151:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:153:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:153:20: error: 'USB_CDC_CAP_LINE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:156:15: error: variable 'acm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:157:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:157:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:158:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:336:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:362:6: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:363:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:374:6: error: 'USB_CDC_REQ_GET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:379:12: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:385:6: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:504:32: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:514:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:550:32: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:643:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:651:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:652:2: error: invalid use of undefined type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:677:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:119:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:1055:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/u_serial.c:1103:29: error: storage size of 'coding' isn't known
../drivers/usb/gadget/function/u_serial.c:1110:23: error: 'USB_CDC_NO_PARITY' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.c:1111:21: error: 'USB_CDC_1_STOP_BITS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_obex.c:84:24: error: 'USB_CDC_SUBCLASS_OBEX' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:107:15: error: variable 'obex_cdc_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:108:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:108:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_obex.c:109:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:111:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_obex.c:114:15: error: variable 'obex_cdc_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:115:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:115:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:116:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:118:2: error: unknown field 'bMasterInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:119:2: error: unknown field 'bSlaveInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:122:15: error: variable 'obex_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:123:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:123:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_obex_desc'
../drivers/usb/gadget/function/f_obex.c:124:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:24: error: 'USB_CDC_OBEX_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:126:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_obex.c:341:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:350:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_ether.c:479:22: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:519:12: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:521:12: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:125:15: error: variable 'ntb_parameters' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:126:2: error: unknown field 'wLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:127:2: error: unknown field 'bmNtbFormatsSupported' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:122:28: error: 'USB_CDC_NCM_NTB16_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:123:6: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:128:2: error: unknown field 'dwNtbInMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:129:2: error: unknown field 'wNdpInDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:130:2: error: unknown field 'wNdpInPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:131:2: error: unknown field 'wNdpInAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:133:2: error: unknown field 'dwNtbOutMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:134:2: error: unknown field 'wNdpOutDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:135:2: error: unknown field 'wNdpOutPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:136:2: error: unknown field 'wNdpOutAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:155:23: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:156:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:174:15: error: variable 'ncm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:175:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:175:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ncm.c:176:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:179:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:182:15: error: variable 'ncm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:183:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:183:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:184:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:190:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:191:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:191:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:192:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:197:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:198:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:199:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:200:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:205:15: error: variable 'ncm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:206:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:206:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_desc'
../drivers/usb/gadget/function/f_ncm.c:207:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:24: error: 'USB_CDC_NCM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:210:2: error: unknown field 'bcdNcmVersion' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:212:2: error: unknown field 'bmNetworkCapabilities' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:203:16: error: 'USB_CDC_NCM_NCAP_ETH_FILTER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:203:46: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:226:24: error: 'USB_CDC_NCM_PROTO_NTB' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:387:15: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:388:15: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:389:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/usb/gadget/function/f_ncm.c:390:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/usb/gadget/function/f_ncm.c:391:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/usb/gadget/function/f_ncm.c:403:15: error: 'USB_CDC_NCM_NTH32_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:404:15: error: 'USB_CDC_NCM_NDP32_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:405:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth32'
../drivers/usb/gadget/function/f_ncm.c:406:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp32'
../drivers/usb/gadget/function/f_ncm.c:407:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe32'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:492:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:492:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:506:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:567:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:598:16: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:629:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:656:5: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:660:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:661:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:667:5: error: 'USB_CDC_GET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:678:5: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:691:5: error: 'USB_CDC_GET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:705:5: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:725:5: error: 'USB_CDC_GET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:739:5: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1377:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:1388:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:1397:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:111:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:112:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:130:15: error: variable 'ecm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:131:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:131:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ecm.c:132:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:135:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:138:15: error: variable 'ecm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:139:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:139:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:140:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:146:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:147:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:147:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:148:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:153:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:154:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:155:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:156:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:396:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:396:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:410:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:462:9: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:484:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:724:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:735:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:744:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_phonet.c:80:1: error: variable 'pn_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:81:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:81:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:82:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:84:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:88:1: error: variable 'pn_phonet_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:89:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:89:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:90:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:91:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:92:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:96:1: error: variable 'pn_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:97:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:97:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:98:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:518:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:525:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_eem.c:53:24: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_eem.c:54:24: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_subset.c:87:24: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:92:15: error: variable 'mdlm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:93:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:93:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_subset.c:94:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:97:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_subset.c:100:15: error: variable 'mdlm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:101:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:101:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/usb/gadget/function/f_subset.c:102:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:24: error: 'USB_CDC_MDLM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:105:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:2: error: unknown field 'bGUID' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:11: error: extra brace group at end of initializer
../drivers/usb/gadget/function/f_subset.c:119:2: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:126:15: error: variable 'ether_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_subset.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:133:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_subset.c:134:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_subset.c:135:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:136:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:331:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/f_rndis.c:121:26: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:122:26: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:126:15: error: variable 'header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_rndis.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:131:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:134:15: error: variable 'call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:135:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:135:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_rndis.c:136:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:139:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:140:2: error: unknown field 'bDataInterface' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:143:15: error: variable 'rndis_acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:144:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:144:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_rndis.c:145:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:148:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:151:15: error: variable 'rndis_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:152:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:152:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:153:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:182:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:183:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:483:6: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:494:6: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:727:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:739:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/serial/visor.c:452:4: error: 'USB_CDC_SUBCLASS_ACM' undeclared (first use in this function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/vhost/net.c:64:14: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/vhost/net.c:531:9: error: variable 'hdr' has initializer but incomplete type
../drivers/vhost/net.c:532:3: error: unknown field 'flags' specified in initializer
../drivers/vhost/net.c:533:3: error: unknown field 'gso_type' specified in initializer
../drivers/vhost/net.c:533:15: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/vhost/net.c:531:24: error: storage size of 'hdr' isn't known
../drivers/vhost/net.c:1004:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/vhost/net.c:1005:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
arm-allnoconfig
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
x86_64-allnoconfig
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:196:18: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:8: error: 'RTIT_CTL_TOPA' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:24: error: 'RTIT_CTL_BRANCH_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:45: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:206:10: error: 'RTIT_CTL_OS' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:208:10: error: 'RTIT_CTL_USR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:221:10: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:519:15: error: 'RTIT_STATUS_ERROR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:525:15: error: 'RTIT_STATUS_STOPPED' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:1071:22: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
arm-multi_v4t_defconfig
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
x86_64-allmodconfig
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:196:18: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:8: error: 'RTIT_CTL_TOPA' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:24: error: 'RTIT_CTL_BRANCH_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:45: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:206:10: error: 'RTIT_CTL_OS' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:208:10: error: 'RTIT_CTL_USR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:221:10: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:519:15: error: 'RTIT_STATUS_ERROR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:525:15: error: 'RTIT_STATUS_STOPPED' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:1071:22: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../drivers/cpufreq/intel_pstate.c:594:9: error: 'MSR_NHM_TURBO_RATIO_LIMIT' undeclared (first use in this function)
../drivers/cpufreq/intel_pstate.c:623:9: error: 'MSR_NHM_TURBO_RATIO_LIMIT' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../drivers/input/misc/ims-pcu.c:1638:26: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1647:41: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1677:17: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1771:25: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1776:5: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1779:18: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1788:5: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:2134:6: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/input/misc/ims-pcu.c:2135:6: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:52:35: error: 'SCTP_CONNTRACK_MAX' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: 'SCTP_CONNTRACK_CLOSED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: 'SCTP_CONNTRACK_COOKIE_WAIT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: 'SCTP_CONNTRACK_COOKIE_ECHOED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: 'SCTP_CONNTRACK_ESTABLISHED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: 'SCTP_CONNTRACK_SHUTDOWN_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: 'SCTP_CONNTRACK_SHUTDOWN_RECD' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: 'SCTP_CONNTRACK_SHUTDOWN_ACK_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:180:22: error: storage size of 'state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:237:26: error: parameter 2 ('cur_state') has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:236:12: error: function declaration isn't a prototype [-Werror=strict-prototypes]
../net/netfilter/nf_conntrack_proto_sctp.c:310:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:310:33: error: storage size of 'old_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:337:26: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../net/netfilter/nf_conntrack_proto_sctp.c:415:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:441:9: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../drivers/staging/gdm724x/gdm_usb.c:39:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/r8152.c:4091:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/r8152.c:4092:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/hso.c:1795:14: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1807:24: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/hso.c:1852:7: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1921:7: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/staging/gdm724x/gdm_mux.c:41:24: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:76:19: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:77:6: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:84:17: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:86:17: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:90:4: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:170:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:176:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/cdc_ether.c:182:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:190:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/net/usb/cdc_ether.c:199:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:205:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ether.c:257:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:263:19: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ether.c:274:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:282:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/cdc_ether.c:288:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:296:14: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/cdc_ether.c:362:17: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:439:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:450:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:455:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:461:4: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:538:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:539:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:626:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:357:37: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:358:4: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.h:104:29: error: field 'line' has incomplete type
../drivers/usb/class/cdc-acm.c:156:27: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:310:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:311:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:312:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:317:7: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:547:31: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:163:20: error: 'USB_CDC_REQ_SEND_BREAK' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:984:29: error: storage size of 'newline' isn't known
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1166:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1167:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1176:8: error: 'USB_CDC_COUNTRY_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1177:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:1181:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1183:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1188:8: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1230:60: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1345:22: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1437:35: error: dereferencing pointer to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1668:19: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1669:3: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1883:3: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1887:3: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1889:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1891:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101_WAKE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1893:3: error: 'USB_CDC_ACM_PROTO_AT_GSM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1895:3: error: 'USB_CDC_ACM_PROTO_AT_3G' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1897:3: error: 'USB_CDC_ACM_PROTO_AT_CDMA' undeclared here (not in a function)
../drivers/net/usb/rndis_host.c:106:30: error: storage size of 'notification' isn't known
../drivers/net/usb/rndis_host.c:130:3: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/rndis_host.c:157:4: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:163:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:169:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/zaurus.c:182:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:188:18: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/zaurus.c:268:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:269:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:319:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:41:25: error: 'USB_CDC_SUBCLASS_DMM' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:238:34: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:244:10: error: switch quantity not an integer
../drivers/usb/class/cdc-wdm.c:245:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:251:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:255:6: error: request for member 'wValue' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:257:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:265:6: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:405:18: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:824:24: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:892:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:894:8: error: 'USB_CDC_DMM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:896:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_dmm_desc'
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/net/usb/cdc-phonet.c:355:9: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc-phonet.c:373:50: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/sierra_net.c:340:33: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:504:5: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:611:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/sierra_net.c:617:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:618:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:621:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/cdc_ncm.c:153:8: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:176:60: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:346:29: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:408:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_ncm.c:410:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ncm_desc'
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:435:37: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ncm.c:448:29: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:459:27: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:461:31: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:464:12: error: 'USB_CDC_NCM_CRC_NOT_APPENDED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:476:7: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:478:31: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:481:12: error: 'USB_CDC_NCM_NTB16_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:507:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:507:94: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:530:29: error: 'USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:534:29: error: 'USB_CDC_GET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:546:30: error: 'USB_CDC_SET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:558:49: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_extended_desc'
../drivers/net/usb/cdc_ncm.c:577:13: error: 'USB_CDC_NCM_NDP_ALIGN_MIN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:757:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:758:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ncm.c:772:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:780:8: error: 'USB_CDC_NCM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:787:8: error: 'USB_CDC_MBIM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:794:8: error: 'USB_CDC_MBIM_EXTENDED_TYPE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1029:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1034:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1091:70: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1091:108: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:36: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1145:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1145:64: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1296:56: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1319:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1320:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1327:11: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1327:40: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1364:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1378:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1379:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1382:14: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1383:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1418:40: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1426:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1427:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1480:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1507:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1520:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1532:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1534:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1538:19: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1592:26: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_ncm.c:1593:26: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/lg-vl600.c:332:5: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/lg-vl600.c:332:32: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:255:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:260:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/qmi_wwan.c:266:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:271:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:278:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:283:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:307:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:319:28: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:500:33: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:501:33: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:171:34: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_mbim.c:225:28: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:281:23: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:438:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_mbim.c:439:19: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:446:19: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:459:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:460:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:593:39: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:593:61: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:597:58: error: 'USB_CDC_SUBCLASS_MBIM' undeclared here (not in a function)
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:60:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:105:23: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:106:23: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:133:15: error: variable 'acm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:134:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:134:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_acm.c:135:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:137:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_acm.c:141:1: error: variable 'acm_call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:142:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:142:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:143:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:145:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:149:15: error: variable 'acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:150:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:150:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_acm.c:151:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:153:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:153:20: error: 'USB_CDC_CAP_LINE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:156:15: error: variable 'acm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:157:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:157:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:158:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:336:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:362:6: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:363:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:374:6: error: 'USB_CDC_REQ_GET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:379:12: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:385:6: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:504:32: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:514:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:550:32: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:643:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:651:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:652:2: error: invalid use of undefined type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:677:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:133:35: error: storage size of 'acm_header_desc' isn't known
../drivers/usb/gadget/function/f_acm.c:141:1: error: storage size of 'acm_call_mgmt_descriptor' isn't known
../drivers/usb/gadget/function/f_acm.c:149:38: error: storage size of 'acm_descriptor' isn't known
../drivers/usb/gadget/function/f_acm.c:156:34: error: storage size of 'acm_union_desc' isn't known
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:119:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:1055:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/u_serial.c:1103:29: error: storage size of 'coding' isn't known
../drivers/usb/gadget/function/u_serial.c:1110:23: error: 'USB_CDC_NO_PARITY' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.c:1111:21: error: 'USB_CDC_1_STOP_BITS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_obex.c:84:24: error: 'USB_CDC_SUBCLASS_OBEX' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:107:15: error: variable 'obex_cdc_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:108:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:108:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_obex.c:109:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:111:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_obex.c:114:15: error: variable 'obex_cdc_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:115:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:115:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:116:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:118:2: error: unknown field 'bMasterInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:119:2: error: unknown field 'bSlaveInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:122:15: error: variable 'obex_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:123:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:123:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_obex_desc'
../drivers/usb/gadget/function/f_obex.c:124:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:24: error: 'USB_CDC_OBEX_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:126:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_obex.c:341:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:350:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:107:35: error: storage size of 'obex_cdc_header_desc' isn't known
../drivers/usb/gadget/function/f_obex.c:114:34: error: storage size of 'obex_cdc_union_desc' isn't known
../drivers/usb/gadget/function/f_obex.c:122:33: error: storage size of 'obex_desc' isn't known
../drivers/usb/gadget/function/u_ether.c:479:22: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:519:12: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:521:12: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:125:15: error: variable 'ntb_parameters' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:126:2: error: unknown field 'wLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:127:2: error: unknown field 'bmNtbFormatsSupported' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:122:28: error: 'USB_CDC_NCM_NTB16_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:123:6: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:128:2: error: unknown field 'dwNtbInMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:129:2: error: unknown field 'wNdpInDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:130:2: error: unknown field 'wNdpInPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:131:2: error: unknown field 'wNdpInAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:133:2: error: unknown field 'dwNtbOutMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:134:2: error: unknown field 'wNdpOutDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:135:2: error: unknown field 'wNdpOutPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:136:2: error: unknown field 'wNdpOutAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:155:23: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:156:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:174:15: error: variable 'ncm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:175:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:175:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ncm.c:176:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:179:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:182:15: error: variable 'ncm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:183:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:183:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:184:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:190:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:191:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:191:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:192:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:197:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:198:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:199:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:200:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:205:15: error: variable 'ncm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:206:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:206:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_desc'
../drivers/usb/gadget/function/f_ncm.c:207:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:24: error: 'USB_CDC_NCM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:210:2: error: unknown field 'bcdNcmVersion' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:212:2: error: unknown field 'bmNetworkCapabilities' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:203:16: error: 'USB_CDC_NCM_NCAP_ETH_FILTER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:203:46: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:226:24: error: 'USB_CDC_NCM_PROTO_NTB' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:387:15: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:388:15: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:389:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/usb/gadget/function/f_ncm.c:390:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/usb/gadget/function/f_ncm.c:391:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/usb/gadget/function/f_ncm.c:403:15: error: 'USB_CDC_NCM_NTH32_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:404:15: error: 'USB_CDC_NCM_NDP32_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:405:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth32'
../drivers/usb/gadget/function/f_ncm.c:406:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp32'
../drivers/usb/gadget/function/f_ncm.c:407:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe32'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:492:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:492:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:506:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:567:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:598:16: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:629:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:656:5: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:660:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:661:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:667:5: error: 'USB_CDC_GET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:678:5: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:691:5: error: 'USB_CDC_GET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:705:5: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:725:5: error: 'USB_CDC_GET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:739:5: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1377:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:1388:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:1397:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:125:42: error: storage size of 'ntb_parameters' isn't known
../drivers/usb/gadget/function/f_ncm.c:174:35: error: storage size of 'ncm_header_desc' isn't known
../drivers/usb/gadget/function/f_ncm.c:182:34: error: storage size of 'ncm_union_desc' isn't known
../drivers/usb/gadget/function/f_ncm.c:190:34: error: storage size of 'ecm_desc' isn't known
../drivers/usb/gadget/function/f_ncm.c:205:32: error: storage size of 'ncm_desc' isn't known
../drivers/usb/gadget/function/f_ecm.c:111:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:112:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:130:15: error: variable 'ecm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:131:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:131:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ecm.c:132:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:135:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:138:15: error: variable 'ecm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:139:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:139:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:140:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:146:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:147:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:147:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:148:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:153:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:154:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:155:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:156:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:396:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:396:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:410:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:462:9: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:484:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:724:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:735:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:744:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:130:35: error: storage size of 'ecm_header_desc' isn't known
../drivers/usb/gadget/function/f_ecm.c:138:34: error: storage size of 'ecm_union_desc' isn't known
../drivers/usb/gadget/function/f_ecm.c:146:34: error: storage size of 'ecm_desc' isn't known
../drivers/usb/gadget/function/f_phonet.c:80:1: error: variable 'pn_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:81:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:81:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:82:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:84:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:88:1: error: variable 'pn_phonet_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:89:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:89:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:90:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:91:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:92:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:96:1: error: variable 'pn_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:97:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:97:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:98:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:518:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:525:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:80:1: error: storage size of 'pn_header_desc' isn't known
../drivers/usb/gadget/function/f_phonet.c:88:1: error: storage size of 'pn_phonet_desc' isn't known
../drivers/usb/gadget/function/f_phonet.c:96:1: error: storage size of 'pn_union_desc' isn't known
../drivers/usb/gadget/function/f_eem.c:53:24: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_eem.c:54:24: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_subset.c:87:24: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:92:15: error: variable 'mdlm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:93:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:93:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_subset.c:94:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:97:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_subset.c:100:15: error: variable 'mdlm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:101:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:101:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/usb/gadget/function/f_subset.c:102:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:24: error: 'USB_CDC_MDLM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:105:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:2: error: unknown field 'bGUID' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:11: error: extra brace group at end of initializer
../drivers/usb/gadget/function/f_subset.c:119:2: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:126:15: error: variable 'ether_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_subset.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:133:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_subset.c:134:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_subset.c:135:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:136:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:331:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/f_subset.c:92:35: error: storage size of 'mdlm_header_desc' isn't known
../drivers/usb/gadget/function/f_subset.c:100:33: error: storage size of 'mdlm_desc' isn't known
../drivers/usb/gadget/function/f_subset.c:126:34: error: storage size of 'ether_desc' isn't known
../drivers/usb/gadget/function/f_rndis.c:121:26: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:122:26: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:126:15: error: variable 'header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_rndis.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:131:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:134:15: error: variable 'call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:135:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:135:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_rndis.c:136:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:139:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:140:2: error: unknown field 'bDataInterface' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:143:15: error: variable 'rndis_acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:144:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:144:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_rndis.c:145:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:148:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:151:15: error: variable 'rndis_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:152:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:152:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:153:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:182:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:183:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:483:6: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:494:6: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:727:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:739:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:126:35: error: storage size of 'header_desc' isn't known
../drivers/usb/gadget/function/f_rndis.c:134:44: error: storage size of 'call_mgmt_descriptor' isn't known
../drivers/usb/gadget/function/f_rndis.c:143:38: error: storage size of 'rndis_acm_descriptor' isn't known
../drivers/usb/gadget/function/f_rndis.c:151:34: error: storage size of 'rndis_union_desc' isn't known
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:52:61: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:57:15: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:493:26: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:14: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:580:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:581:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:584:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:587:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:601:24: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:602:34: error: implicit declaration of function 'macvtap16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/macvtap.c:622:29: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:631:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:633:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:635:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:639:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:641:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:644:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:653:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:670:9: error: variable 'vnet_hdr' has initializer but incomplete type
../drivers/net/macvtap.c:670:24: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:690:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:811:25: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:1077:23: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/vhost/net.c:64:14: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/vhost/net.c:531:9: error: variable 'hdr' has initializer but incomplete type
../drivers/vhost/net.c:532:3: error: unknown field 'flags' specified in initializer
../drivers/vhost/net.c:533:3: error: unknown field 'gso_type' specified in initializer
../drivers/vhost/net.c:533:15: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/vhost/net.c:531:24: error: storage size of 'hdr' isn't known
../drivers/vhost/net.c:1004:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/vhost/net.c:1005:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:209:56: error: unknown type name '__virtio16'
../drivers/net/tun.c:214:15: error: unknown type name '__virtio16'
../drivers/net/tun.c:1041:9: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1041:24: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1068:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1069:7: error: implicit declaration of function 'tun16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/tun.c:1170:22: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1172:27: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1173:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1176:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1179:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1274:10: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1274:25: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1285:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1287:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1289:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1303:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1305:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1308:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1313:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:1653:29: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/tun.c:2043:33: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:154:34: error: field 'hdr' has incomplete type
../drivers/net/virtio_net.c:269:27: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:360:16: error: implicit declaration of function 'virtio16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:480:23: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:486:30: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:494:27: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:496:32: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:497:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:500:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:503:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:613:32: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:787:21: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:872:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:873:25: error: implicit declaration of function 'cpu_to_virtio16' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:887:24: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:889:24: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:891:24: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:895:25: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:897:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:987:29: error: storage size of 'ctrl' isn't known
../drivers/net/virtio_net.c:988:2: error: unknown type name 'virtio_net_ctrl_ack'
../drivers/net/virtio_net.c:992:10: error: implicit declaration of function 'virtio_has_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:992:39: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1011:20: error: 'VIRTIO_NET_OK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1035:31: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1037:33: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1038:8: error: 'VIRTIO_NET_CTRL_MAC_ADDR_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1043:38: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1044:32: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1049:4: error: implicit declaration of function 'virtio_cwrite8' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1050:28: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1111:32: error: 'VIRTIO_NET_CTRL_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1112:7: error: 'VIRTIO_NET_CTRL_ANNOUNCE_ACK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1120:28: error: storage size of 's' isn't known
../drivers/net/virtio_net.c:1123:52: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1129:32: error: 'VIRTIO_NET_CTRL_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1130:7: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1171:36: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1179:32: error: 'VIRTIO_NET_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1180:7: error: 'VIRTIO_NET_CTRL_RX_PROMISC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1187:7: error: 'VIRTIO_NET_CTRL_RX_ALLMULTI' undeclared (first use in this function)
../drivers/net/virtio_net.c:1195:29: error: dereferencing pointer to incomplete type 'struct virtio_net_ctrl_mac'
../drivers/net/virtio_net.c:1203:22: error: implicit declaration of function 'cpu_to_virtio32' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1222:32: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1223:7: error: 'VIRTIO_NET_CTRL_MAC_TABLE_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1237:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1238:7: error: 'VIRTIO_NET_CTRL_VLAN_ADD' undeclared (first use in this function)
../drivers/net/virtio_net.c:1251:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1252:7: error: 'VIRTIO_NET_CTRL_VLAN_DEL' undeclared (first use in this function)
../drivers/net/virtio_net.c:1263:4: error: implicit declaration of function 'virtqueue_set_affinity' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1338:26: error: implicit declaration of function 'virtio_bus_name' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:6: error: implicit declaration of function 'virtio_cread_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:37: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1432:6: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1435:10: error: 'VIRTIO_NET_S_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1441:7: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:1529:14: error: dereferencing pointer to incomplete type 'const struct virtio_config_ops'
../drivers/net/virtio_net.c:1536:2: error: unknown type name 'vq_callback_t'
../drivers/net/virtio_net.c:1547:36: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1583:36: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1709:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1710:29: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1712:29: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1714:29: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1716:29: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1717:29: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1742:35: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1743:8: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1747:31: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1748:24: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1749:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1766:31: error: 'VIRTIO_NET_F_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1772:32: error: 'VIRTIO_NET_F_GSO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1777:32: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1779:32: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1781:32: error: 'VIRTIO_NET_F_HOST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1783:32: error: 'VIRTIO_NET_F_HOST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1792:31: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1798:31: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1799:3: error: implicit declaration of function 'virtio_cread_bytes' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1800:24: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1825:31: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1826:31: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1827:31: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1828:31: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1831:31: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared (first use in this function)
../drivers/net/virtio_net.c:1835:31: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1836:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:1838:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/virtio_net.c:1840:31: error: 'VIRTIO_F_ANY_LAYOUT' undeclared (first use in this function)
../drivers/net/virtio_net.c:1872:2: error: implicit declaration of function 'virtio_device_ready' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1896:35: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1900:16: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:2015:4: error: 'VIRTIO_ID_NET' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: 'VIRTIO_NET_F_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2020:21: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:21: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:2: error: 'VIRTIO_NET_F_GSO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:20: error: 'VIRTIO_NET_F_MAC' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:20: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:2: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:26: error: 'VIRTIO_NET_F_HOST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:49: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:49: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:2: error: 'VIRTIO_NET_F_HOST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:25: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:25: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:50: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:50: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:2: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:26: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:2: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:26: error: 'VIRTIO_NET_F_STATUS' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:47: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:47: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:2: error: 'VIRTIO_NET_F_CTRL_RX' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:24: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:24: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:2: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:31: error: 'VIRTIO_NET_F_MQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:31: error: initializer element is not constant
../drivers/net/virtio_net.c:2028:2: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared here (not in a function)
../drivers/net/virtio_net.c:2028:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2029:2: error: 'VIRTIO_F_ANY_LAYOUT' undeclared here (not in a function)
../drivers/net/virtio_net.c:2029:2: error: initializer element is not constant
../drivers/usb/serial/visor.c:452:4: error: 'USB_CDC_SUBCLASS_ACM' undeclared (first use in this function)
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/virthba/virthba.c:622:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:623:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:630:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:673:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:674:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:681:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:838:15: error: 'struct uiscmdrsp_scsi' has no member named 'scsicmd'; did you mean 'scsistat'?
../drivers/staging/unisys/virthba/virthba.c:1037:3: error: implicit declaration of function 'SET_NO_DISK_INQUIRY_RESULT' [-Werror=implicit-function-declaration]
../drivers/staging/unisys/virthba/virthba.c:1098:27: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1099:52: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:1107:30: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1109:55: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:1142:21: error: 'struct uiscmdrsp_scsi' has no member named 'scsicmd'; did you mean 'scsistat'?
../drivers/staging/unisys/virthba/virthba.c:1149:39: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:1162:28: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:1331:2: error: implicit declaration of function 'SPAR_CHANNEL_CLIENT_TRANSITION' [-Werror=implicit-function-declaration]
../drivers/staging/unisys/virthba/virthba.c:1380:29: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:1381:32: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1386:29: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1389:26: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/virtpci/virtpci.c:896:2: error: implicit declaration of function 'SPAR_CHANNEL_CLIENT_TRANSITION' [-Werror=implicit-function-declaration]
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
arm64-defconfig
../include/linux/thread_info.h:128:2: error: implicit declaration of function 'WARN_ON' [-Werror=implicit-function-declaration]
../arch/arm64/include/asm/arch_timer.h:113:2: error: implicit declaration of function 'BUG' [-Werror=implicit-function-declaration]
../include/linux/page-flags.h:410:2: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
../include/linux/kernfs.h:252:2: error: implicit declaration of function 'WARN_ON_ONCE' [-Werror=implicit-function-declaration]
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
11 warnings 0 mismatches : arm-multi_v5_defconfig
24 warnings 0 mismatches : arm-multi_v7_defconfig
11 warnings 0 mismatches : x86_64-defconfig
228 warnings 0 mismatches : arm-allmodconfig
2 warnings 0 mismatches : arm-allnoconfig
1 warnings 0 mismatches : x86_64-allnoconfig
2 warnings 0 mismatches : arm-multi_v4t_defconfig
219 warnings 0 mismatches : x86_64-allmodconfig
-------------------------------------------------------------------------------
Errors summary: 918
305 ../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
20 ../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
20 ../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
20 ../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
14 ../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
14 ../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
14 ../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
14 ../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
13 ../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
13 ../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
13 ../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
9 ../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
9 ../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
8 ../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
7 ../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
7 ../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
7 ../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
7 ../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
6 ../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
6 ../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
6 ../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
6 ../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
6 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
6 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
5 ../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
5 ../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
5 ../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
5 ../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
5 ../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
5 ../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
5 ../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
5 ../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
5 ../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
5 ../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
5 ../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
5 ../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
5 ../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
5 ../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
5 ../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
5 ../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
5 ../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
5 ../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
5 ../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
5 ../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
5 ../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
5 ../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
5 ../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
5 ../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
5 ../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
5 ../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
5 ../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
5 ../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
5 ../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
5 ../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
5 ../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
5 ../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
5 ../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
5 ../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
5 ../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
5 ../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
5 ../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
5 ../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
5 ../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
4 ../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
4 ../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
4 ../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
4 ../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
4 ../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
4 ../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
4 ../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
4 ../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
4 ../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
4 ../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
4 ../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
4 ../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
4 ../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
4 ../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
4 ../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
3 ../net/sunrpc/xprtsock.c:1635:38: error: 'SO_REUSEPORT' undeclared (first use in this function)
3 ../net/core/sock.c:980:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
3 ../net/core/sock.c:967:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
3 ../net/core/sock.c:962:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
3 ../net/core/sock.c:923:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
3 ../net/core/sock.c:906:7: error: 'SO_ATTACH_BPF' undeclared (first use in this function)
3 ../net/core/sock.c:708:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
3 ../net/core/sock.c:1242:7: error: 'SO_INCOMING_CPU' undeclared (first use in this function)
3 ../net/core/sock.c:1238:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
3 ../net/core/sock.c:1233:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
3 ../net/core/sock.c:1228:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
3 ../net/core/sock.c:1224:7: error: 'SO_BPF_EXTENSIONS' undeclared (first use in this function)
3 ../net/core/sock.c:1220:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
3 ../net/core/sock.c:1213:7: error: 'SO_GET_FILTER' undeclared (first use in this function)
3 ../net/core/sock.c:1055:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
3 ../kernel/module.c:907:35: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
3 ../drivers/net/usb/zaurus.c:319:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
3 ../drivers/net/usb/zaurus.c:269:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
3 ../drivers/net/usb/zaurus.c:268:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
3 ../drivers/net/usb/zaurus.c:188:18: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
3 ../drivers/net/usb/zaurus.c:182:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/zaurus.c:169:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
3 ../drivers/net/usb/zaurus.c:163:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:794:8: error: 'USB_CDC_MBIM_EXTENDED_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:787:8: error: 'USB_CDC_MBIM_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:780:8: error: 'USB_CDC_NCM_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:772:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:758:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
3 ../drivers/net/usb/cdc_ncm.c:757:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:577:13: error: 'USB_CDC_NCM_NDP_ALIGN_MIN_SIZE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:558:49: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_extended_desc'
3 ../drivers/net/usb/cdc_ncm.c:546:30: error: 'USB_CDC_SET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:534:29: error: 'USB_CDC_GET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:530:29: error: 'USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:507:94: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
3 ../drivers/net/usb/cdc_ncm.c:507:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
3 ../drivers/net/usb/cdc_ncm.c:481:12: error: 'USB_CDC_NCM_NTB16_FORMAT' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:478:31: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:476:7: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:464:12: error: 'USB_CDC_NCM_CRC_NOT_APPENDED' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:461:31: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:459:27: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:448:29: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:435:37: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ether_desc'
3 ../drivers/net/usb/cdc_ncm.c:410:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ncm_desc'
3 ../drivers/net/usb/cdc_ncm.c:408:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
3 ../drivers/net/usb/cdc_ncm.c:346:29: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:176:60: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
3 ../drivers/net/usb/cdc_ncm.c:1593:26: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
3 ../drivers/net/usb/cdc_ncm.c:1592:26: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
3 ../drivers/net/usb/cdc_ncm.c:153:8: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:1538:19: error: invalid use of undefined type 'struct usb_cdc_notification'
3 ../drivers/net/usb/cdc_ncm.c:1534:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_speed_change'
3 ../drivers/net/usb/cdc_ncm.c:1532:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:1520:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:1507:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
3 ../drivers/net/usb/cdc_ncm.c:1480:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_speed_change'
3 ../drivers/net/usb/cdc_ncm.c:1427:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
3 ../drivers/net/usb/cdc_ncm.c:1426:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
3 ../drivers/net/usb/cdc_ncm.c:1418:40: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:1383:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
3 ../drivers/net/usb/cdc_ncm.c:1382:14: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
3 ../drivers/net/usb/cdc_ncm.c:1379:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
3 ../drivers/net/usb/cdc_ncm.c:1378:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
3 ../drivers/net/usb/cdc_ncm.c:1364:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
3 ../drivers/net/usb/cdc_ncm.c:1327:40: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:1327:11: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
3 ../drivers/net/usb/cdc_ncm.c:1320:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
3 ../drivers/net/usb/cdc_ncm.c:1319:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
3 ../drivers/net/usb/cdc_ncm.c:1296:56: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:1145:64: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
3 ../drivers/net/usb/cdc_ncm.c:1145:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
3 ../drivers/net/usb/cdc_ncm.c:1092:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
3 ../drivers/net/usb/cdc_ncm.c:1092:36: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ncm.c:1091:70: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
3 ../drivers/net/usb/cdc_ncm.c:1091:108: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
3 ../drivers/net/usb/cdc_ncm.c:1034:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
3 ../drivers/net/usb/cdc_ncm.c:1029:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
3 ../drivers/net/usb/cdc_ether.c:90:4: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:86:17: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:84:17: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:77:6: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:76:19: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:626:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
3 ../drivers/net/usb/cdc_ether.c:539:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
3 ../drivers/net/usb/cdc_ether.c:538:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
3 ../drivers/net/usb/cdc_ether.c:461:4: error: invalid use of undefined type 'struct usb_cdc_notification'
3 ../drivers/net/usb/cdc_ether.c:455:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:450:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:439:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
3 ../drivers/net/usb/cdc_ether.c:362:17: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
3 ../drivers/net/usb/cdc_ether.c:296:14: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
3 ../drivers/net/usb/cdc_ether.c:288:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:282:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
3 ../drivers/net/usb/cdc_ether.c:274:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:263:19: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
3 ../drivers/net/usb/cdc_ether.c:257:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:205:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
3 ../drivers/net/usb/cdc_ether.c:199:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:190:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_acm_descriptor'
3 ../drivers/net/usb/cdc_ether.c:182:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
3 ../drivers/net/usb/cdc_ether.c:176:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_header_desc'
3 ../drivers/net/usb/cdc_ether.c:170:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:525:15: error: 'RTIT_STATUS_STOPPED' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:519:15: error: 'RTIT_STATUS_ERROR' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:221:10: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:208:10: error: 'RTIT_CTL_USR' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:206:10: error: 'RTIT_CTL_OS' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:8: error: 'RTIT_CTL_TOPA' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:45: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:24: error: 'RTIT_CTL_BRANCH_EN' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:196:18: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:1071:22: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: array index in initializer not of integer type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: 'SCTP_CONNTRACK_SHUTDOWN_ACK_SENT' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: array index in initializer not of integer type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: 'SCTP_CONNTRACK_SHUTDOWN_RECD' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: array index in initializer not of integer type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: 'SCTP_CONNTRACK_SHUTDOWN_SENT' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: array index in initializer not of integer type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: 'SCTP_CONNTRACK_ESTABLISHED' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: array index in initializer not of integer type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: 'SCTP_CONNTRACK_COOKIE_ECHOED' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: array index in initializer not of integer type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: 'SCTP_CONNTRACK_COOKIE_WAIT' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: array index in initializer not of integer type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: 'SCTP_CONNTRACK_CLOSED' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:52:35: error: 'SCTP_CONNTRACK_MAX' undeclared here (not in a function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:441:9: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:415:22: error: storage size of 'new_state' isn't known
2 ../net/netfilter/nf_conntrack_proto_sctp.c:337:26: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
2 ../net/netfilter/nf_conntrack_proto_sctp.c:310:33: error: storage size of 'old_state' isn't known
2 ../net/netfilter/nf_conntrack_proto_sctp.c:310:22: error: storage size of 'new_state' isn't known
2 ../net/netfilter/nf_conntrack_proto_sctp.c:237:26: error: parameter 2 ('cur_state') has incomplete type
2 ../net/netfilter/nf_conntrack_proto_sctp.c:236:12: error: function declaration isn't a prototype [-Werror=strict-prototypes]
2 ../net/netfilter/nf_conntrack_proto_sctp.c:180:22: error: storage size of 'state' isn't known
2 ../mm/percpu.c:96:20: error: '__per_cpu_start' undeclared (first use in this function)
2 ../mm/percpu.c:2228:57: error: '__per_cpu_start' undeclared (first use in this function)
2 ../mm/percpu.c:2026:16: error: '__per_cpu_load' undeclared (first use in this function)
2 ../mm/percpu.c:1800:45: error: '__per_cpu_start' undeclared (first use in this function)
2 ../mm/percpu.c:1800:29: error: '__per_cpu_end' undeclared (first use in this function)
2 ../mm/percpu.c:1575:35: error: '__per_cpu_start' undeclared (first use in this function)
2 ../mm/percpu.c:1302:45: error: '__per_cpu_start' undeclared (first use in this function)
2 ../mm/percpu.c:1302:29: error: '__per_cpu_end' undeclared (first use in this function)
2 ../kernel/profile.c:106:23: error: '_stext' undeclared (first use in this function)
2 ../kernel/profile.c:106:14: error: '_etext' undeclared (first use in this function)
2 ../kernel/kexec.c:1950:20: error: '_stext' undeclared (first use in this function)
2 ../include/linux/thread_info.h:128:2: error: implicit declaration of function 'WARN_ON' [-Werror=implicit-function-declaration]
2 ../drivers/vhost/net.c:64:14: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
2 ../drivers/vhost/net.c:533:3: error: unknown field 'gso_type' specified in initializer
2 ../drivers/vhost/net.c:533:15: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
2 ../drivers/vhost/net.c:532:3: error: unknown field 'flags' specified in initializer
2 ../drivers/vhost/net.c:531:9: error: variable 'hdr' has initializer but incomplete type
2 ../drivers/vhost/net.c:531:24: error: storage size of 'hdr' isn't known
2 ../drivers/vhost/net.c:1005:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
2 ../drivers/vhost/net.c:1004:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
2 ../drivers/usb/serial/visor.c:452:4: error: 'USB_CDC_SUBCLASS_ACM' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/u_serial.c:119:29: error: field 'port_line_coding' has incomplete type
2 ../drivers/usb/gadget/function/u_serial.c:1111:21: error: 'USB_CDC_1_STOP_BITS' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/u_serial.c:1110:23: error: 'USB_CDC_NO_PARITY' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/u_serial.c:1103:29: error: storage size of 'coding' isn't known
2 ../drivers/usb/gadget/function/u_serial.c:1055:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
2 ../drivers/usb/gadget/function/u_ether.h:93:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
2 ../drivers/usb/gadget/function/u_ether.h:92:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
2 ../drivers/usb/gadget/function/u_ether.h:91:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
2 ../drivers/usb/gadget/function/u_ether.c:521:12: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/u_ether.c:519:12: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/u_ether.c:479:22: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_subset.c:97:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:95:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:95:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_subset.c:94:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:93:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:93:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_subset.c:92:15: error: variable 'mdlm_header_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_subset.c:87:24: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_subset.c:331:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
2 ../drivers/usb/gadget/function/f_subset.c:136:2: error: unknown field 'bNumberPowerFilters' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:135:2: error: unknown field 'wNumberMCFilters' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:134:2: error: unknown field 'wMaxSegmentSize' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:133:2: error: unknown field 'bmEthernetStatistics' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:129:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_subset.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:127:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
2 ../drivers/usb/gadget/function/f_subset.c:126:15: error: variable 'ether_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_subset.c:119:2: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_subset.c:106:2: error: unknown field 'bGUID' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:106:11: error: extra brace group at end of initializer
2 ../drivers/usb/gadget/function/f_subset.c:105:2: error: unknown field 'bcdVersion' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:103:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:103:24: error: 'USB_CDC_MDLM_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_subset.c:102:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:101:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_subset.c:101:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_mdlm_desc'
2 ../drivers/usb/gadget/function/f_subset.c:100:15: error: variable 'mdlm_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_rndis.c:739:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_rndis.c:727:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_rndis.c:494:6: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_rndis.c:483:6: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_rndis.c:183:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_rndis.c:182:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_rndis.c:154:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:154:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_rndis.c:153:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:152:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:152:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_rndis.c:151:15: error: variable 'rndis_union_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_rndis.c:148:2: error: unknown field 'bmCapabilities' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:146:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:146:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_rndis.c:145:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:144:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:144:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
2 ../drivers/usb/gadget/function/f_rndis.c:143:15: error: variable 'rndis_acm_descriptor' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_rndis.c:140:2: error: unknown field 'bDataInterface' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:139:2: error: unknown field 'bmCapabilities' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:137:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:137:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_rndis.c:136:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:135:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:135:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
2 ../drivers/usb/gadget/function/f_rndis.c:134:15: error: variable 'call_mgmt_descriptor' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_rndis.c:131:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:129:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_rndis.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:127:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_rndis.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_rndis.c:126:15: error: variable 'header_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_rndis.c:122:26: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_rndis.c:121:26: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_phonet.c:99:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:99:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_phonet.c:98:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:97:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:97:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_phonet.c:96:1: error: variable 'pn_union_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_phonet.c:92:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:91:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:90:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:89:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:89:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_phonet.c:88:1: error: variable 'pn_phonet_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_phonet.c:84:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:83:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:83:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_phonet.c:82:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:81:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_phonet.c:81:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_phonet.c:80:1: error: variable 'pn_header_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_phonet.c:525:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_phonet.c:518:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_obex.c:84:24: error: 'USB_CDC_SUBCLASS_OBEX' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_obex.c:350:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_obex.c:341:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_obex.c:126:2: error: unknown field 'bcdVersion' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:125:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:125:24: error: 'USB_CDC_OBEX_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_obex.c:124:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:123:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:123:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_obex_desc'
2 ../drivers/usb/gadget/function/f_obex.c:122:15: error: variable 'obex_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_obex.c:119:2: error: unknown field 'bSlaveInterface0' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:118:2: error: unknown field 'bMasterInterface0' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:117:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:117:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_obex.c:116:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:115:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:115:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_obex.c:114:15: error: variable 'obex_cdc_union_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_obex.c:111:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:110:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:110:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_obex.c:109:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:108:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_obex.c:108:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_obex.c:107:15: error: variable 'obex_cdc_header_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ncm.c:739:5: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:725:5: error: 'USB_CDC_GET_CRC_MODE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:705:5: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:691:5: error: 'USB_CDC_GET_NTB_FORMAT' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:678:5: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:667:5: error: 'USB_CDC_GET_NTB_INPUT_SIZE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:661:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
2 ../drivers/usb/gadget/function/f_ncm.c:660:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
2 ../drivers/usb/gadget/function/f_ncm.c:656:5: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:629:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:598:16: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:567:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/gadget/function/f_ncm.c:506:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:492:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/gadget/function/f_ncm.c:492:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ncm.c:407:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe32'
2 ../drivers/usb/gadget/function/f_ncm.c:406:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp32'
2 ../drivers/usb/gadget/function/f_ncm.c:405:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth32'
2 ../drivers/usb/gadget/function/f_ncm.c:404:15: error: 'USB_CDC_NCM_NDP32_NOCRC_SIGN' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:403:15: error: 'USB_CDC_NCM_NTH32_SIGN' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:391:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
2 ../drivers/usb/gadget/function/f_ncm.c:390:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
2 ../drivers/usb/gadget/function/f_ncm.c:389:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
2 ../drivers/usb/gadget/function/f_ncm.c:388:15: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:387:15: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:226:24: error: 'USB_CDC_NCM_PROTO_NTB' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:212:2: error: unknown field 'bmNetworkCapabilities' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:210:2: error: unknown field 'bcdNcmVersion' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:208:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:208:24: error: 'USB_CDC_NCM_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:207:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:206:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:206:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_desc'
2 ../drivers/usb/gadget/function/f_ncm.c:205:15: error: variable 'ncm_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ncm.c:203:46: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:203:16: error: 'USB_CDC_NCM_NCAP_ETH_FILTER' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:200:2: error: unknown field 'bNumberPowerFilters' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:199:2: error: unknown field 'wNumberMCFilters' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:198:2: error: unknown field 'wMaxSegmentSize' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:197:2: error: unknown field 'bmEthernetStatistics' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:193:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:193:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:192:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:191:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:191:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
2 ../drivers/usb/gadget/function/f_ncm.c:190:15: error: variable 'ecm_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ncm.c:185:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:185:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:184:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:183:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:183:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_ncm.c:182:15: error: variable 'ncm_union_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ncm.c:179:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:177:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:177:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:176:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:175:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:175:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_ncm.c:174:15: error: variable 'ncm_header_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ncm.c:156:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:155:23: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:1397:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_ncm.c:1388:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_ncm.c:1377:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
2 ../drivers/usb/gadget/function/f_ncm.c:136:2: error: unknown field 'wNdpOutAlignment' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:135:2: error: unknown field 'wNdpOutPayloadRemainder' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:134:2: error: unknown field 'wNdpOutDivisor' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:133:2: error: unknown field 'dwNtbOutMaxSize' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:131:2: error: unknown field 'wNdpInAlignment' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:130:2: error: unknown field 'wNdpInPayloadRemainder' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:129:2: error: unknown field 'wNdpInDivisor' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:128:2: error: unknown field 'dwNtbInMaxSize' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:127:2: error: unknown field 'bmNtbFormatsSupported' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:126:2: error: unknown field 'wLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ncm.c:125:15: error: variable 'ntb_parameters' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ncm.c:123:6: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ncm.c:122:28: error: 'USB_CDC_NCM_NTB16_SUPPORTED' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_eem.c:54:24: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_eem.c:53:24: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ecm.c:744:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_ecm.c:735:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_ecm.c:724:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
2 ../drivers/usb/gadget/function/f_ecm.c:484:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ecm.c:462:9: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/gadget/function/f_ecm.c:410:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ecm.c:396:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/gadget/function/f_ecm.c:396:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_ecm.c:156:2: error: unknown field 'bNumberPowerFilters' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:155:2: error: unknown field 'wNumberMCFilters' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:154:2: error: unknown field 'wMaxSegmentSize' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:153:2: error: unknown field 'bmEthernetStatistics' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:149:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:149:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ecm.c:148:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:147:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:147:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
2 ../drivers/usb/gadget/function/f_ecm.c:146:15: error: variable 'ecm_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ecm.c:141:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:141:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ecm.c:140:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:139:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:139:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_ecm.c:138:15: error: variable 'ecm_union_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ecm.c:135:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:133:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:133:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ecm.c:132:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:131:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_ecm.c:131:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_ecm.c:130:15: error: variable 'ecm_header_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_ecm.c:112:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_ecm.c:111:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_acm.c:677:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/gadget/function/f_acm.c:652:2: error: invalid use of undefined type 'struct usb_cdc_call_mgmt_descriptor'
2 ../drivers/usb/gadget/function/f_acm.c:651:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_acm.c:643:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_acm.c:60:29: error: field 'port_line_coding' has incomplete type
2 ../drivers/usb/gadget/function/f_acm.c:550:32: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_acm.c:514:2: error: invalid use of undefined type 'struct usb_cdc_notification'
2 ../drivers/usb/gadget/function/f_acm.c:504:32: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/gadget/function/f_acm.c:385:6: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_acm.c:379:12: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
2 ../drivers/usb/gadget/function/f_acm.c:374:6: error: 'USB_CDC_REQ_GET_LINE_CODING' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_acm.c:363:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
2 ../drivers/usb/gadget/function/f_acm.c:362:6: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
2 ../drivers/usb/gadget/function/f_acm.c:336:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
2 ../drivers/usb/gadget/function/f_acm.c:159:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:159:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_acm.c:158:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:157:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:157:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/gadget/function/f_acm.c:156:15: error: variable 'acm_union_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_acm.c:153:2: error: unknown field 'bmCapabilities' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:153:20: error: 'USB_CDC_CAP_LINE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_acm.c:152:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:152:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_acm.c:151:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:150:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:150:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
2 ../drivers/usb/gadget/function/f_acm.c:149:15: error: variable 'acm_descriptor' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_acm.c:145:2: error: unknown field 'bmCapabilities' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:144:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:144:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_acm.c:143:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:142:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:142:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
2 ../drivers/usb/gadget/function/f_acm.c:141:1: error: variable 'acm_call_mgmt_descriptor' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_acm.c:137:2: error: unknown field 'bcdCDC' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:136:2: error: unknown field 'bDescriptorSubType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:136:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_acm.c:135:2: error: unknown field 'bDescriptorType' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:134:2: error: unknown field 'bLength' specified in initializer
2 ../drivers/usb/gadget/function/f_acm.c:134:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
2 ../drivers/usb/gadget/function/f_acm.c:133:15: error: variable 'acm_header_desc' has initializer but incomplete type
2 ../drivers/usb/gadget/function/f_acm.c:106:23: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
2 ../drivers/usb/gadget/function/f_acm.c:105:23: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-wdm.c:896:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_dmm_desc'
2 ../drivers/usb/class/cdc-wdm.c:894:8: error: 'USB_CDC_DMM_TYPE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-wdm.c:892:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-wdm.c:824:24: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-wdm.c:41:25: error: 'USB_CDC_SUBCLASS_DMM' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-wdm.c:405:18: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-wdm.c:265:6: error: request for member 'bNotificationType' in something not a structure or union
2 ../drivers/usb/class/cdc-wdm.c:257:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-wdm.c:255:6: error: request for member 'wValue' in something not a structure or union
2 ../drivers/usb/class/cdc-wdm.c:251:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-wdm.c:245:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-wdm.c:244:12: error: request for member 'bNotificationType' in something not a structure or union
2 ../drivers/usb/class/cdc-wdm.c:244:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/class/cdc-wdm.c:244:10: error: switch quantity not an integer
2 ../drivers/usb/class/cdc-wdm.c:238:34: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/class/cdc-acm.h:104:29: error: field 'line' has incomplete type
2 ../drivers/usb/class/cdc-acm.c:984:29: error: storage size of 'newline' isn't known
2 ../drivers/usb/class/cdc-acm.c:547:31: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:317:7: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:312:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:311:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/usb/class/cdc-acm.c:310:2: error: invalid use of undefined type 'struct usb_cdc_notification'
2 ../drivers/usb/class/cdc-acm.c:1897:3: error: 'USB_CDC_ACM_PROTO_AT_CDMA' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1895:3: error: 'USB_CDC_ACM_PROTO_AT_3G' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1893:3: error: 'USB_CDC_ACM_PROTO_AT_GSM' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1891:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101_WAKE' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1889:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1887:3: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1883:3: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1669:3: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:1668:19: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
2 ../drivers/usb/class/cdc-acm.c:163:20: error: 'USB_CDC_REQ_SEND_BREAK' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:156:27: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:1437:35: error: dereferencing pointer to incomplete type 'struct usb_cdc_country_functional_desc'
2 ../drivers/usb/class/cdc-acm.c:1345:22: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:1230:60: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/class/cdc-acm.c:1188:8: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:1183:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:1181:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:1177:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_country_functional_desc'
2 ../drivers/usb/class/cdc-acm.c:1176:8: error: 'USB_CDC_COUNTRY_TYPE' undeclared (first use in this function)
2 ../drivers/usb/class/cdc-acm.c:1167:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/usb/class/cdc-acm.c:1166:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
2 ../drivers/staging/gdm724x/gdm_usb.c:39:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
2 ../drivers/staging/gdm724x/gdm_mux.c:41:24: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:992:39: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:992:10: error: implicit declaration of function 'virtio_has_feature' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:988:2: error: unknown type name 'virtio_net_ctrl_ack'
2 ../drivers/net/virtio_net.c:987:29: error: storage size of 'ctrl' isn't known
2 ../drivers/net/virtio_net.c:897:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:895:25: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:891:24: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:889:24: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:887:24: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:873:25: error: implicit declaration of function 'cpu_to_virtio16' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:872:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:787:21: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:613:32: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
2 ../drivers/net/virtio_net.c:503:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:500:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:497:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:496:32: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:494:27: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:486:30: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:480:23: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:360:16: error: implicit declaration of function 'virtio16_to_cpu' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:269:27: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
2 ../drivers/net/virtio_net.c:2029:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2029:2: error: 'VIRTIO_F_ANY_LAYOUT' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2028:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2028:2: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2027:31: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2027:31: error: 'VIRTIO_NET_F_MQ' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2027:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2027:2: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2026:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2026:2: error: 'VIRTIO_NET_F_CTRL_RX' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2026:24: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2026:24: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2025:47: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2025:47: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2025:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2025:2: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2025:26: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2025:26: error: 'VIRTIO_NET_F_STATUS' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2024:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2024:2: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2024:26: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2024:26: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2023:50: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2023:50: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2023:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2023:2: error: 'VIRTIO_NET_F_HOST_ECN' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2023:25: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2023:25: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2022:49: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2022:49: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2022:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2022:2: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2022:26: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2022:26: error: 'VIRTIO_NET_F_HOST_UFO' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2021:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2021:2: error: 'VIRTIO_NET_F_GSO' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2021:20: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2021:20: error: 'VIRTIO_NET_F_MAC' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2020:2: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2020:2: error: 'VIRTIO_NET_F_CSUM' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2020:21: error: initializer element is not constant
2 ../drivers/net/virtio_net.c:2020:21: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:2015:4: error: 'VIRTIO_ID_NET' undeclared here (not in a function)
2 ../drivers/net/virtio_net.c:1900:16: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1896:35: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1872:2: error: implicit declaration of function 'virtio_device_ready' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:1840:31: error: 'VIRTIO_F_ANY_LAYOUT' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1838:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
2 ../drivers/net/virtio_net.c:1836:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
2 ../drivers/net/virtio_net.c:1835:31: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1831:31: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1828:31: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1827:31: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1826:31: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1825:31: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1800:24: error: invalid use of undefined type 'struct virtio_net_config'
2 ../drivers/net/virtio_net.c:1799:3: error: implicit declaration of function 'virtio_cread_bytes' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:1798:31: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1792:31: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1783:32: error: 'VIRTIO_NET_F_HOST_UFO' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1781:32: error: 'VIRTIO_NET_F_HOST_ECN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1779:32: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1777:32: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1772:32: error: 'VIRTIO_NET_F_GSO' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1766:31: error: 'VIRTIO_NET_F_CSUM' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1749:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1748:24: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1747:31: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1743:8: error: expected expression before 'struct'
2 ../drivers/net/virtio_net.c:1742:35: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1717:29: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1716:29: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1714:29: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1712:29: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1710:29: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1709:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1583:36: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:154:34: error: field 'hdr' has incomplete type
2 ../drivers/net/virtio_net.c:1547:36: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1536:2: error: unknown type name 'vq_callback_t'
2 ../drivers/net/virtio_net.c:1529:14: error: dereferencing pointer to incomplete type 'const struct virtio_config_ops'
2 ../drivers/net/virtio_net.c:1441:7: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1435:10: error: 'VIRTIO_NET_S_ANNOUNCE' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1432:6: error: expected expression before 'struct'
2 ../drivers/net/virtio_net.c:1431:6: error: implicit declaration of function 'virtio_cread_feature' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:1431:37: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1338:26: error: implicit declaration of function 'virtio_bus_name' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:1263:4: error: implicit declaration of function 'virtqueue_set_affinity' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:1252:7: error: 'VIRTIO_NET_CTRL_VLAN_DEL' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1251:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1238:7: error: 'VIRTIO_NET_CTRL_VLAN_ADD' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1237:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1223:7: error: 'VIRTIO_NET_CTRL_MAC_TABLE_SET' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1222:32: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1203:22: error: implicit declaration of function 'cpu_to_virtio32' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:1195:29: error: dereferencing pointer to incomplete type 'struct virtio_net_ctrl_mac'
2 ../drivers/net/virtio_net.c:1187:7: error: 'VIRTIO_NET_CTRL_RX_ALLMULTI' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1180:7: error: 'VIRTIO_NET_CTRL_RX_PROMISC' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1179:32: error: 'VIRTIO_NET_CTRL_RX' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1171:36: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1130:7: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1129:32: error: 'VIRTIO_NET_CTRL_MQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1123:52: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1120:28: error: storage size of 's' isn't known
2 ../drivers/net/virtio_net.c:1112:7: error: 'VIRTIO_NET_CTRL_ANNOUNCE_ACK' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1111:32: error: 'VIRTIO_NET_CTRL_ANNOUNCE' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1050:28: error: invalid use of undefined type 'struct virtio_net_config'
2 ../drivers/net/virtio_net.c:1049:4: error: implicit declaration of function 'virtio_cwrite8' [-Werror=implicit-function-declaration]
2 ../drivers/net/virtio_net.c:1044:32: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1043:38: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1038:8: error: 'VIRTIO_NET_CTRL_MAC_ADDR_SET' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1037:33: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1035:31: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
2 ../drivers/net/virtio_net.c:1011:20: error: 'VIRTIO_NET_OK' undeclared (first use in this function)
2 ../drivers/net/usb/sierra_net.c:621:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
2 ../drivers/net/usb/sierra_net.c:618:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
2 ../drivers/net/usb/sierra_net.c:617:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
2 ../drivers/net/usb/sierra_net.c:611:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
2 ../drivers/net/usb/sierra_net.c:504:5: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
2 ../drivers/net/usb/sierra_net.c:340:33: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
2 ../drivers/net/usb/rndis_host.c:157:4: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
2 ../drivers/net/usb/rndis_host.c:130:3: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
2 ../drivers/net/usb/rndis_host.c:106:30: error: storage size of 'notification' isn't known
2 ../drivers/net/usb/r8152.c:4092:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/net/usb/r8152.c:4091:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
2 ../drivers/net/usb/qmi_wwan.c:501:33: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/net/usb/qmi_wwan.c:500:33: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
2 ../drivers/net/usb/qmi_wwan.c:319:28: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
2 ../drivers/net/usb/qmi_wwan.c:307:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/net/usb/qmi_wwan.c:283:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
2 ../drivers/net/usb/qmi_wwan.c:278:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
2 ../drivers/net/usb/qmi_wwan.c:271:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
2 ../drivers/net/usb/qmi_wwan.c:266:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
2 ../drivers/net/usb/qmi_wwan.c:260:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
2 ../drivers/net/usb/qmi_wwan.c:255:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
2 ../drivers/net/usb/lg-vl600.c:332:5: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
2 ../drivers/net/usb/lg-vl600.c:332:32: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/net/usb/hso.c:1921:7: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
2 ../drivers/net/usb/hso.c:1852:7: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
2 ../drivers/net/usb/hso.c:1807:24: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
2 ../drivers/net/usb/hso.c:1795:14: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
2 ../drivers/net/usb/cdc_mbim.c:597:58: error: 'USB_CDC_SUBCLASS_MBIM' undeclared here (not in a function)
2 ../drivers/net/usb/cdc_mbim.c:593:61: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
2 ../drivers/net/usb/cdc_mbim.c:593:39: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
2 ../drivers/net/usb/cdc_mbim.c:460:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
2 ../drivers/net/usb/cdc_mbim.c:459:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
2 ../drivers/net/usb/cdc_mbim.c:446:19: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
2 ../drivers/net/usb/cdc_mbim.c:439:19: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
2 ../drivers/net/usb/cdc_mbim.c:438:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
2 ../drivers/net/usb/cdc_mbim.c:281:23: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
2 ../drivers/net/usb/cdc_mbim.c:225:28: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
2 ../drivers/net/usb/cdc_mbim.c:171:34: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
2 ../drivers/net/usb/cdc_eem.c:358:4: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
2 ../drivers/net/usb/cdc_eem.c:357:37: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
2 ../drivers/net/usb/cdc-phonet.c:373:50: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
2 ../drivers/net/usb/cdc-phonet.c:355:9: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
2 ../drivers/net/tun.c:214:15: error: unknown type name '__virtio16'
2 ../drivers/net/tun.c:209:56: error: unknown type name '__virtio16'
2 ../drivers/net/tun.c:2043:33: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
2 ../drivers/net/tun.c:1653:29: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
2 ../drivers/net/tun.c:1313:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
2 ../drivers/net/tun.c:1308:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
2 ../drivers/net/tun.c:1305:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
2 ../drivers/net/tun.c:1303:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
2 ../drivers/net/tun.c:1289:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
2 ../drivers/net/tun.c:1287:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
2 ../drivers/net/tun.c:1285:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
2 ../drivers/net/tun.c:1274:25: error: storage size of 'gso' isn't known
2 ../drivers/net/tun.c:1274:10: error: variable 'gso' has initializer but incomplete type
2 ../drivers/net/tun.c:1179:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
2 ../drivers/net/tun.c:1176:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
2 ../drivers/net/tun.c:1173:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
2 ../drivers/net/tun.c:1172:27: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
2 ../drivers/net/tun.c:1170:22: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
2 ../drivers/net/tun.c:1069:7: error: implicit declaration of function 'tun16_to_cpu' [-Werror=implicit-function-declaration]
2 ../drivers/net/tun.c:1068:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
2 ../drivers/net/tun.c:1041:9: error: variable 'gso' has initializer but incomplete type
2 ../drivers/net/tun.c:1041:24: error: storage size of 'gso' isn't known
2 ../drivers/net/macvtap.c:811:25: error: storage size of 'vnet_hdr' isn't known
2 ../drivers/net/macvtap.c:690:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:670:9: error: variable 'vnet_hdr' has initializer but incomplete type
2 ../drivers/net/macvtap.c:670:24: error: storage size of 'vnet_hdr' isn't known
2 ../drivers/net/macvtap.c:653:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:644:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:641:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:639:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:635:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:633:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:631:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:622:29: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
2 ../drivers/net/macvtap.c:602:34: error: implicit declaration of function 'macvtap16_to_cpu' [-Werror=implicit-function-declaration]
2 ../drivers/net/macvtap.c:601:24: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:587:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:584:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:581:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:580:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:57:15: error: unknown type name '__virtio16'
2 ../drivers/net/macvtap.c:579:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
2 ../drivers/net/macvtap.c:579:14: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
2 ../drivers/net/macvtap.c:52:61: error: unknown type name '__virtio16'
2 ../drivers/net/macvtap.c:493:26: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
2 ../drivers/net/macvtap.c:1077:23: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
2 ../drivers/input/misc/ims-pcu.c:2135:6: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
2 ../drivers/input/misc/ims-pcu.c:2134:6: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
2 ../drivers/input/misc/ims-pcu.c:1788:5: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
2 ../drivers/input/misc/ims-pcu.c:1779:18: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
2 ../drivers/input/misc/ims-pcu.c:1776:5: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
2 ../drivers/input/misc/ims-pcu.c:1771:25: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
2 ../drivers/input/misc/ims-pcu.c:1677:17: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
2 ../drivers/input/misc/ims-pcu.c:1647:41: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
2 ../drivers/input/misc/ims-pcu.c:1638:26: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
2 ../arch/arm64/include/asm/arch_timer.h:113:2: error: implicit declaration of function 'BUG' [-Werror=implicit-function-declaration]
1 ../mm/kmemleak.c:1341:7: error: '__per_cpu_end' undeclared (first use in this function)
1 ../mm/kmemleak.c:1340:14: error: '__per_cpu_start' undeclared (first use in this function)
1 ../mm/kmemleak.c:1335:26: error: '__bss_stop' undeclared (first use in this function)
1 ../mm/kmemleak.c:1335:13: error: '__bss_start' undeclared (first use in this function)
1 ../mm/kmemleak.c:1334:21: error: '_edata' undeclared (first use in this function)
1 ../mm/kmemleak.c:1334:13: error: '_sdata' undeclared (first use in this function)
1 ../lib/dma-debug.c:1185:41: error: '__end_rodata' undeclared (first use in this function)
1 ../lib/dma-debug.c:1185:25: error: '__start_rodata' undeclared (first use in this function)
1 ../lib/dma-debug.c:1184:33: error: '_etext' undeclared (first use in this function)
1 ../lib/dma-debug.c:1184:25: error: '_stext' undeclared (first use in this function)
1 ../kernel/profile.c:396:45: error: '_stext' undeclared (first use in this function)
1 ../kernel/profile.c:287:32: error: '_stext' undeclared (first use in this function)
1 ../kernel/locking/lockdep.c:622:6: error: implicit declaration of function 'arch_is_kernel_data' [-Werror=implicit-function-declaration]
1 ../kernel/locking/lockdep.c:613:34: error: '_end' undeclared (first use in this function)
1 ../kernel/locking/lockdep.c:612:41: error: '_stext' undeclared (first use in this function)
1 ../init/main.c:687:28: error: '__ctors_end' undeclared (first use in this function)
1 ../init/main.c:685:32: error: '__ctors_start' undeclared (first use in this function)
1 ../include/linux/page-flags.h:410:2: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
1 ../include/linux/mmdebug.h:17:25: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
1 ../include/linux/kref.h:47:2: error: implicit declaration of function 'WARN_ON_ONCE' [-Werror=implicit-function-declaration]
1 ../include/linux/kernfs.h:252:2: error: implicit declaration of function 'WARN_ON_ONCE' [-Werror=implicit-function-declaration]
1 ../include/linux/jump_label.h:60:32: error: implicit declaration of function 'WARN' [-Werror=implicit-function-declaration]
1 ../include/linux/dma-attrs.h:54:2: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
1 ../drivers/usb/gadget/function/f_subset.c:92:35: error: storage size of 'mdlm_header_desc' isn't known
1 ../drivers/usb/gadget/function/f_subset.c:126:34: error: storage size of 'ether_desc' isn't known
1 ../drivers/usb/gadget/function/f_subset.c:100:33: error: storage size of 'mdlm_desc' isn't known
1 ../drivers/usb/gadget/function/f_rndis.c:151:34: error: storage size of 'rndis_union_desc' isn't known
1 ../drivers/usb/gadget/function/f_rndis.c:143:38: error: storage size of 'rndis_acm_descriptor' isn't known
1 ../drivers/usb/gadget/function/f_rndis.c:134:44: error: storage size of 'call_mgmt_descriptor' isn't known
1 ../drivers/usb/gadget/function/f_rndis.c:126:35: error: storage size of 'header_desc' isn't known
1 ../drivers/usb/gadget/function/f_phonet.c:96:1: error: storage size of 'pn_union_desc' isn't known
1 ../drivers/usb/gadget/function/f_phonet.c:88:1: error: storage size of 'pn_phonet_desc' isn't known
1 ../drivers/usb/gadget/function/f_phonet.c:80:1: error: storage size of 'pn_header_desc' isn't known
1 ../drivers/usb/gadget/function/f_obex.c:122:33: error: storage size of 'obex_desc' isn't known
1 ../drivers/usb/gadget/function/f_obex.c:114:34: error: storage size of 'obex_cdc_union_desc' isn't known
1 ../drivers/usb/gadget/function/f_obex.c:107:35: error: storage size of 'obex_cdc_header_desc' isn't known
1 ../drivers/usb/gadget/function/f_ncm.c:205:32: error: storage size of 'ncm_desc' isn't known
1 ../drivers/usb/gadget/function/f_ncm.c:190:34: error: storage size of 'ecm_desc' isn't known
1 ../drivers/usb/gadget/function/f_ncm.c:182:34: error: storage size of 'ncm_union_desc' isn't known
1 ../drivers/usb/gadget/function/f_ncm.c:174:35: error: storage size of 'ncm_header_desc' isn't known
1 ../drivers/usb/gadget/function/f_ncm.c:125:42: error: storage size of 'ntb_parameters' isn't known
1 ../drivers/usb/gadget/function/f_ecm.c:146:34: error: storage size of 'ecm_desc' isn't known
1 ../drivers/usb/gadget/function/f_ecm.c:138:34: error: storage size of 'ecm_union_desc' isn't known
1 ../drivers/usb/gadget/function/f_ecm.c:130:35: error: storage size of 'ecm_header_desc' isn't known
1 ../drivers/usb/gadget/function/f_acm.c:156:34: error: storage size of 'acm_union_desc' isn't known
1 ../drivers/usb/gadget/function/f_acm.c:149:38: error: storage size of 'acm_descriptor' isn't known
1 ../drivers/usb/gadget/function/f_acm.c:141:1: error: storage size of 'acm_call_mgmt_descriptor' isn't known
1 ../drivers/usb/gadget/function/f_acm.c:133:35: error: storage size of 'acm_header_desc' isn't known
1 ../drivers/staging/unisys/virtpci/virtpci.c:896:2: error: implicit declaration of function 'SPAR_CHANNEL_CLIENT_TRANSITION' [-Werror=implicit-function-declaration]
1 ../drivers/staging/unisys/virthba/virthba.c:838:15: error: 'struct uiscmdrsp_scsi' has no member named 'scsicmd'; did you mean 'scsistat'?
1 ../drivers/staging/unisys/virthba/virthba.c:681:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'scsicmd'
1 ../drivers/staging/unisys/virthba/virthba.c:674:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
1 ../drivers/staging/unisys/virthba/virthba.c:673:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
1 ../drivers/staging/unisys/virthba/virthba.c:630:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'scsicmd'
1 ../drivers/staging/unisys/virthba/virthba.c:623:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
1 ../drivers/staging/unisys/virthba/virthba.c:622:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
1 ../drivers/staging/unisys/virthba/virthba.c:1389:26: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
1 ../drivers/staging/unisys/virthba/virthba.c:1386:29: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
1 ../drivers/staging/unisys/virthba/virthba.c:1381:32: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
1 ../drivers/staging/unisys/virthba/virthba.c:1380:29: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
1 ../drivers/staging/unisys/virthba/virthba.c:1331:2: error: implicit declaration of function 'SPAR_CHANNEL_CLIENT_TRANSITION' [-Werror=implicit-function-declaration]
1 ../drivers/staging/unisys/virthba/virthba.c:1162:28: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'scsicmd'
1 ../drivers/staging/unisys/virthba/virthba.c:1149:39: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'scsicmd'
1 ../drivers/staging/unisys/virthba/virthba.c:1142:21: error: 'struct uiscmdrsp_scsi' has no member named 'scsicmd'; did you mean 'scsistat'?
1 ../drivers/staging/unisys/virthba/virthba.c:1109:55: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
1 ../drivers/staging/unisys/virthba/virthba.c:1107:30: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
1 ../drivers/staging/unisys/virthba/virthba.c:1099:52: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
1 ../drivers/staging/unisys/virthba/virthba.c:1098:27: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
1 ../drivers/staging/unisys/virthba/virthba.c:1037:3: error: implicit declaration of function 'SET_NO_DISK_INQUIRY_RESULT' [-Werror=implicit-function-declaration]
1 ../drivers/parport/parport_pc.c:3066:2: error: implicit declaration of function 'parport_pc_find_nonpci_ports' [-Werror=implicit-function-declaration]
1 ../drivers/misc/kgdbts.c:226:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
1 ../drivers/hwtracing/coresight/coresight-etm3x.c:1770:32: error: '_etext' undeclared (first use in this function)
1 ../drivers/hwtracing/coresight/coresight-etm3x.c:1769:32: error: '_stext' undeclared (first use in this function)
1 ../drivers/cpufreq/intel_pstate.c:623:9: error: 'MSR_NHM_TURBO_RATIO_LIMIT' undeclared (first use in this function)
1 ../drivers/cpufreq/intel_pstate.c:594:9: error: 'MSR_NHM_TURBO_RATIO_LIMIT' undeclared (first use in this function)
1 ../arch/arm/mm/init.c:610:13: error: initializer element is not constant
1 ../arch/arm/mm/init.c:609:13: error: initializer element is not constant
1 ../arch/arm/mm/init.c:597:28: error: '__start_rodata' undeclared here (not in a function)
1 ../arch/arm/mm/init.c:590:25: error: '_sdata' undeclared here (not in a function)
1 ../arch/arm/mm/init.c:589:27: error: '__init_begin' undeclared here (not in a function)
1 ../arch/arm/mm/init.c:583:25: error: '_stext' undeclared here (not in a function)
1 ../arch/arm/kernel/hibernate.c:30:46: error: '__nosave_end' undeclared (first use in this function)
1 ../arch/arm/kernel/hibernate.c:29:48: error: '__nosave_begin' undeclared (first use in this function)
1 ../arch/arm/include/asm/parport.h:13:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'parport_pc_find_nonpci_ports'
1 ../arch/arm/include/asm/parport.h:12:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'parport_pc_find_isa_ports'
Warnings Summary: 172
48 ../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
30 ../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
25 ../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
25 ../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
20 ../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
7 ../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
7 ../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
7 ../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
6 ../include/linux/virtio_net.h:8:19: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
6 ../include/linux/virtio_net.h:58:15: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
5 ../net/packet/af_packet.c:2959:38: warning: excess elements in struct initializer
5 ../net/packet/af_packet.c:2959:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
5 ../net/packet/af_packet.c:2420:37: warning: excess elements in struct initializer
5 ../net/packet/af_packet.c:2420:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
5 ../mm/util.c:24:1: warning: control reaches end of non-void function [-Wreturn-type]
5 ../lib/vsprintf.c:1474:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
5 ../include/uapi/linux/byteorder/little_endian.h:35:42: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
5 ../include/uapi/linux/byteorder/little_endian.h:32:26: warning: excess elements in struct initializer
5 ../include/uapi/linux/byteorder/big_endian.h:32:26: warning: excess elements in struct initializer
5 ../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
4 ../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
3 ../drivers/net/usb/cdc_ncm.c:1513:9: warning: passing argument 2 of 'cdc_ncm_speed_change' from incompatible pointer type [-Wincompatible-pointer-types]
3 ../arch/x86/kernel/cpu/perf_event_intel_pt.c:197:1: warning: control reaches end of non-void function [-Wreturn-type]
2 ../sound/pci/oxygen/oxygen_mixer.c:91:43: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
2 ../net/netfilter/nf_conntrack_proto_sctp.c:52:21: warning: 'sctp_timeouts' defined but not used [-Wunused-variable]
2 ../net/netfilter/nf_conntrack_proto_sctp.c:415:22: warning: unused variable 'new_state' [-Wunused-variable]
2 ../net/netfilter/nf_conntrack_proto_sctp.c:310:33: warning: unused variable 'old_state' [-Wunused-variable]
2 ../net/netfilter/nf_conntrack_proto_sctp.c:310:22: warning: unused variable 'new_state' [-Wunused-variable]
2 ../net/netfilter/nf_conntrack_proto_sctp.c:180:22: warning: unused variable 'state' [-Wunused-variable]
2 ../net/netfilter/nf_conntrack_proto_sctp.c:104:17: warning: 'sctp_conntracks' defined but not used [-Wunused-variable]
2 ../drivers/vhost/net.c:533:15: warning: excess elements in struct initializer
2 ../drivers/vhost/net.c:532:12: warning: excess elements in struct initializer
2 ../drivers/vhost/net.c:531:24: warning: unused variable 'hdr' [-Wunused-variable]
2 ../drivers/usb/gadget/function/u_serial.c:1103:29: warning: unused variable 'coding' [-Wunused-variable]
2 ../drivers/usb/gadget/function/u_ether.c:480:1: warning: control reaches end of non-void function [-Wreturn-type]
2 ../drivers/usb/gadget/function/f_subset.c:95:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_subset.c:93:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_subset.c:504:24: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
2 ../drivers/usb/gadget/function/f_subset.c:331:2: warning: statement with no effect [-Wunused-value]
2 ../drivers/usb/gadget/function/f_subset.c:136:25: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_subset.c:129:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_subset.c:127:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_subset.c:106:11: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_subset.c:103:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_subset.c:101:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:154:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:152:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:148:20: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:146:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:144:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:140:20: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:139:20: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:137:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:135:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:129:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_rndis.c:127:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_phonet.c:99:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_phonet.c:97:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_phonet.c:89:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_phonet.c:83:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_phonet.c:81:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_phonet.c:67:29: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:125:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:123:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:119:22: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:118:23: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:117:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:115:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:110:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_obex.c:108:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:208:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:206:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:203:15: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:200:25: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:193:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:191:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:185:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:183:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:177:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ncm.c:175:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ecm.c:156:25: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ecm.c:149:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ecm.c:147:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ecm.c:141:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ecm.c:139:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ecm.c:133:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_ecm.c:131:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:159:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:157:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:153:20: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:152:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:150:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:145:20: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:144:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:142:14: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:136:24: warning: excess elements in struct initializer
2 ../drivers/usb/gadget/function/f_acm.c:134:14: warning: excess elements in struct initializer
2 ../drivers/usb/class/cdc-wdm.c:824:22: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
2 ../drivers/usb/class/cdc-wdm.c:405:16: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
2 ../drivers/usb/class/cdc-wdm.c:238:25: warning: comparison between pointer and integer
2 ../drivers/usb/class/cdc-acm.c:984:29: warning: unused variable 'newline' [-Wunused-variable]
2 ../drivers/usb/class/cdc-acm.c:158:1: warning: control reaches end of non-void function [-Wreturn-type]
2 ../drivers/scsi/qla2xxx/qla_target.c:3086:6: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type 'uint32_t {aka unsigned int}' [-Wformat=]
2 ../drivers/scsi/qla2xxx/qla_target.c:3083:17: warning: unused variable 'se_cmd' [-Wunused-variable]
2 ../drivers/scsi/be2iscsi/be_main.c:3168:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
2 ../drivers/net/virtio_net.c:987:29: warning: unused variable 'ctrl' [-Wunused-variable]
2 ../drivers/net/virtio_net.c:1569:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
2 ../drivers/net/virtio_net.c:1568:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
2 ../drivers/net/virtio_net.c:1338:26: warning: passing argument 2 of 'strlcpy' makes pointer from integer without a cast [-Wint-conversion]
2 ../drivers/net/virtio_net.c:1120:28: warning: unused variable 's' [-Wunused-variable]
2 ../drivers/net/usb/rndis_host.c:106:30: warning: unused variable 'notification' [-Wunused-variable]
2 ../drivers/net/usb/hso.c:1926:1: warning: control reaches end of non-void function [-Wreturn-type]
2 ../drivers/net/usb/hso.c:1857:1: warning: control reaches end of non-void function [-Wreturn-type]
2 ../drivers/net/usb/cdc_ncm.c:1478:15: warning: its scope is only this definition or declaration, which is probably not what you want
2 ../drivers/net/usb/cdc_ncm.c:1478:15: warning: 'struct usb_cdc_speed_change' declared inside parameter list
2 ../drivers/net/tun.c:1274:33: warning: excess elements in struct initializer
2 ../drivers/net/tun.c:1274:25: warning: unused variable 'gso' [-Wunused-variable]
2 ../drivers/net/tun.c:1041:32: warning: excess elements in struct initializer
2 ../drivers/net/tun.c:1041:24: warning: unused variable 'gso' [-Wunused-variable]
2 ../drivers/net/macvtap.c:811:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
2 ../drivers/net/macvtap.c:670:37: warning: excess elements in struct initializer
2 ../drivers/net/macvtap.c:670:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
2 ../drivers/media/platform/s3c-camif/camif-capture.c:134:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
2 ../drivers/media/platform/s3c-camif/camif-capture.c:118:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
2 ../drivers/iommu/intel-iommu.c:3800:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
2 ../drivers/iommu/dmar.c:1849:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
2 ../drivers/hid/hid-input.c:1163:67: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
2 ../drivers/ata/pata_hpt366.c:382:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
2 ../drivers/ata/pata_hpt366.c:379:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
2 ../drivers/ata/pata_hpt366.c:376:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
2 ../arch/x86/include/asm/msr.h:209:23: warning: right shift count >= width of type [-Wshift-count-overflow]
1 ../net/caif/cfpkt_skbuff.c:282:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../include/trace/ftrace.h:28:0: warning: "TRACE_SYSTEM_STRING" redefined
1 ../drivers/usb/renesas_usbhs/common.c:492:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 ../drivers/usb/class/cdc-wdm.c:264:4: warning: format '%d' expects argument of type 'int', but argument 3 has type 'const struct usb_device_id *' [-Wformat=]
1 ../drivers/usb/class/cdc-wdm.c:264:27: warning: format '%d' expects argument of type 'int', but argument 3 has type 'const struct usb_device_id *' [-Wformat=]
1 ../drivers/staging/unisys/visorutil/periodic_work.c:91:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
1 ../drivers/staging/unisys/visorutil/periodic_work.c:122:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
1 ../drivers/staging/rtl8723au/core/rtw_wlan_util.c:525:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/staging/iio/adc/ad7192.c:236:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/staging/i2o/i2o_config.c:952:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
1 ../drivers/staging/i2o/i2o_config.c:892:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
1 ../drivers/scsi/storvsc_drv.c:1676:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/megaraid/megaraid_sas_fusion.c:1723:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" [-Wcpp]
1 ../drivers/scsi/bfa/bfa_ioc.c:3673:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/bfa/bfa_ioc.c:3665:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not properly converted to the DMA API [-Wcpp]
1 ../drivers/rtc/rtc-pcf8563.c:444:5: warning: 'alm_pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 ../drivers/rtc/rtc-armada38x.c:91:22: warning: unused variable 'flags' [-Wunused-variable]
1 ../drivers/net/wireless/iwlegacy/3945.c:1022:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
1 ../drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 ../drivers/net/usb/cdc_ncm.c:1478:15: warning: 'struct usb_cdc_speed_change' declared inside parameter list will not be visible outside of this definition or declaration
1 ../drivers/net/macvtap.c:620:16: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
1 ../drivers/net/macvtap.c:620:16: warning: 'struct virtio_net_hdr' declared inside parameter list
1 ../drivers/net/macvtap.c:576:17: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
1 ../drivers/net/macvtap.c:576:17: warning: 'struct virtio_net_hdr' declared inside parameter list
1 ../drivers/net/ethernet/dec/tulip/uli526x.c:1086:4: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/mtd/mtd_blkdevs.c:100:2: warning: switch condition has boolean value [-Wswitch-bool]
1 ../drivers/mmc/host/sh_mmcif.c:402:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
1 ../drivers/mmc/host/sh_mmcif.c:401:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
1 ../drivers/media/usb/cx231xx/cx231xx-cards.c:1110:1: warning: the frame size of 2064 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/platform/coda/./trace.h:12:0: warning: "TRACE_SYSTEM_STRING" redefined
1 ../drivers/media/platform/am437x/am437x-vpfe.c:1723:27: warning: self-comparison always evaluates to true [-Wtautological-compare]
1 ../drivers/infiniband/hw/cxgb4/mem.c:147:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 ../drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c:975:1: warning: the frame size of 1192 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 ../drivers/gpu/drm/gma500/cdv_intel_dp.c:869:2: warning: 'i2c_dp_aux_add_bus' is deprecated [-Wdeprecated-declarations]
1 ../drivers/block/hd.c:630:3: warning: switch condition has boolean value [-Wswitch-bool]
1 ../drivers/atm/iphase.c:1176:12: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../arch/x86/xen/mmu.c:1105:57: warning: array subscript is above array bounds [-Warray-bounds]
1 ../arch/arm/mach-cns3xxx/pcie.c:266:1: warning: the frame size of 1080 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 ../arch/arm/include/asm/cmpxchg.h:205:3: warning: value computed is not used [-Wunused-value]
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
arm64-allnoconfig : FAIL, 5 errors, 0 warnings, 0 section mismatches
Errors:
../include/linux/thread_info.h:128:2: error: implicit declaration of function 'WARN_ON' [-Werror=implicit-function-declaration]
../arch/arm64/include/asm/arch_timer.h:113:2: error: implicit declaration of function 'BUG' [-Werror=implicit-function-declaration]
../include/linux/kref.h:47:2: error: implicit declaration of function 'WARN_ON_ONCE' [-Werror=implicit-function-declaration]
../include/linux/dma-attrs.h:54:2: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
../include/linux/jump_label.h:60:32: error: implicit declaration of function 'WARN' [-Werror=implicit-function-declaration]
-------------------------------------------------------------------------------
arm64-allmodconfig : FAIL, 1 errors, 0 warnings, 0 section mismatches
Errors:
../include/linux/mmdebug.h:17:25: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
-------------------------------------------------------------------------------
arm-multi_v5_defconfig : FAIL, 107 errors, 11 warnings, 0 section mismatches
Errors:
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../net/core/sock.c:708:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:906:7: error: 'SO_ATTACH_BPF' undeclared (first use in this function)
../net/core/sock.c:923:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:962:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:967:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:980:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1055:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:1213:7: error: 'SO_GET_FILTER' undeclared (first use in this function)
../net/core/sock.c:1220:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:1224:7: error: 'SO_BPF_EXTENSIONS' undeclared (first use in this function)
../net/core/sock.c:1228:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:1233:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:1238:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1242:7: error: 'SO_INCOMING_CPU' undeclared (first use in this function)
../kernel/profile.c:106:14: error: '_etext' undeclared (first use in this function)
../kernel/profile.c:106:23: error: '_stext' undeclared (first use in this function)
../kernel/profile.c:396:45: error: '_stext' undeclared (first use in this function)
../kernel/module.c:907:35: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/sunrpc/xprtsock.c:1635:38: error: 'SO_REUSEPORT' undeclared (first use in this function)
Warnings:
../mm/util.c:24:1: warning: control reaches end of non-void function [-Wreturn-type]
../lib/vsprintf.c:1474:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
../net/packet/af_packet.c:2420:37: warning: excess elements in struct initializer
../net/packet/af_packet.c:2420:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../net/packet/af_packet.c:2959:38: warning: excess elements in struct initializer
../net/packet/af_packet.c:2959:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/rtc/rtc-pcf8563.c:444:5: warning: 'alm_pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
arm-multi_v7_defconfig : FAIL, 219 errors, 24 warnings, 0 section mismatches
Errors:
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:96:20: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1302:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1302:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1575:35: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1800:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1800:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:2026:16: error: '__per_cpu_load' undeclared (first use in this function)
../mm/percpu.c:2228:57: error: '__per_cpu_start' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/module.c:907:35: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../kernel/kexec.c:1950:20: error: '_stext' undeclared (first use in this function)
../net/core/sock.c:708:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:906:7: error: 'SO_ATTACH_BPF' undeclared (first use in this function)
../net/core/sock.c:923:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:962:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:967:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:980:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1055:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:1213:7: error: 'SO_GET_FILTER' undeclared (first use in this function)
../net/core/sock.c:1220:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:1224:7: error: 'SO_BPF_EXTENSIONS' undeclared (first use in this function)
../net/core/sock.c:1228:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:1233:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:1238:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1242:7: error: 'SO_INCOMING_CPU' undeclared (first use in this function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/sunrpc/xprtsock.c:1635:38: error: 'SO_REUSEPORT' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../drivers/net/usb/cdc_ether.c:76:19: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:77:6: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:84:17: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:86:17: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:90:4: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:170:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:176:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/cdc_ether.c:182:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:190:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/net/usb/cdc_ether.c:199:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:205:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ether.c:257:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:263:19: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ether.c:274:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:282:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/cdc_ether.c:288:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:296:14: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/cdc_ether.c:362:17: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:439:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:450:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:455:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:461:4: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:538:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:539:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:626:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:163:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:169:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/zaurus.c:182:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:188:18: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/zaurus.c:268:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:269:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:319:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/cdc_ncm.c:153:8: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:176:60: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:346:29: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:408:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_ncm.c:410:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ncm_desc'
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:435:37: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ncm.c:448:29: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:459:27: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:461:31: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:464:12: error: 'USB_CDC_NCM_CRC_NOT_APPENDED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:476:7: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:478:31: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:481:12: error: 'USB_CDC_NCM_NTB16_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:507:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:507:94: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:530:29: error: 'USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:534:29: error: 'USB_CDC_GET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:546:30: error: 'USB_CDC_SET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:558:49: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_extended_desc'
../drivers/net/usb/cdc_ncm.c:577:13: error: 'USB_CDC_NCM_NDP_ALIGN_MIN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:757:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:758:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ncm.c:772:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:780:8: error: 'USB_CDC_NCM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:787:8: error: 'USB_CDC_MBIM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:794:8: error: 'USB_CDC_MBIM_EXTENDED_TYPE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1029:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1034:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1091:70: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1091:108: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:36: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1145:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1145:64: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1296:56: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1319:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1320:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1327:11: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1327:40: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1364:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1378:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1379:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1382:14: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1383:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1418:40: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1426:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1427:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1480:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1507:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1520:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1532:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1534:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1538:19: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1592:26: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_ncm.c:1593:26: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
Warnings:
../mm/util.c:24:1: warning: control reaches end of non-void function [-Wreturn-type]
../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
../net/packet/af_packet.c:2420:37: warning: excess elements in struct initializer
../net/packet/af_packet.c:2420:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../net/packet/af_packet.c:2959:38: warning: excess elements in struct initializer
../net/packet/af_packet.c:2959:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../lib/vsprintf.c:1474:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/net/usb/cdc_ncm.c:1478:15: warning: 'struct usb_cdc_speed_change' declared inside parameter list
../drivers/net/usb/cdc_ncm.c:1478:15: warning: its scope is only this definition or declaration, which is probably not what you want
../drivers/net/usb/cdc_ncm.c:1513:9: warning: passing argument 2 of 'cdc_ncm_speed_change' from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
x86_64-defconfig : FAIL, 89 errors, 11 warnings, 0 section mismatches
Errors:
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:196:18: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:8: error: 'RTIT_CTL_TOPA' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:24: error: 'RTIT_CTL_BRANCH_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:45: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:206:10: error: 'RTIT_CTL_OS' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:208:10: error: 'RTIT_CTL_USR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:221:10: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:519:15: error: 'RTIT_STATUS_ERROR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:525:15: error: 'RTIT_STATUS_STOPPED' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:1071:22: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
Warnings:
../arch/x86/kernel/cpu/perf_event_intel_pt.c:197:1: warning: control reaches end of non-void function [-Wreturn-type]
../arch/x86/include/asm/msr.h:209:23: warning: right shift count >= width of type [-Wshift-count-overflow]
../drivers/hid/hid-input.c:1163:67: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/iommu/dmar.c:1849:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../drivers/iommu/intel-iommu.c:3800:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../include/linux/virtio_net.h:8:19: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../include/linux/virtio_net.h:58:15: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../net/packet/af_packet.c:2420:37: warning: excess elements in struct initializer
../net/packet/af_packet.c:2420:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../net/packet/af_packet.c:2959:38: warning: excess elements in struct initializer
../net/packet/af_packet.c:2959:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
-------------------------------------------------------------------------------
arm-allmodconfig : FAIL, 1148 errors, 228 warnings, 0 section mismatches
Errors:
../init/main.c:685:32: error: '__ctors_start' undeclared (first use in this function)
../init/main.c:687:28: error: '__ctors_end' undeclared (first use in this function)
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:583:25: error: '_stext' undeclared here (not in a function)
../arch/arm/mm/init.c:589:27: error: '__init_begin' undeclared here (not in a function)
../arch/arm/mm/init.c:590:25: error: '_sdata' undeclared here (not in a function)
../arch/arm/mm/init.c:597:28: error: '__start_rodata' undeclared here (not in a function)
../arch/arm/mm/init.c:609:13: error: initializer element is not constant
../arch/arm/mm/init.c:610:13: error: initializer element is not constant
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/hibernate.c:29:48: error: '__nosave_begin' undeclared (first use in this function)
../arch/arm/kernel/hibernate.c:30:46: error: '__nosave_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:96:20: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1302:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1302:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:90:21: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1575:35: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:1800:29: error: '__per_cpu_end' undeclared (first use in this function)
../mm/percpu.c:1800:45: error: '__per_cpu_start' undeclared (first use in this function)
../mm/percpu.c:2026:16: error: '__per_cpu_load' undeclared (first use in this function)
../mm/percpu.c:2228:57: error: '__per_cpu_start' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../mm/kmemleak.c:1334:13: error: '_sdata' undeclared (first use in this function)
../mm/kmemleak.c:1334:21: error: '_edata' undeclared (first use in this function)
../mm/kmemleak.c:1335:13: error: '__bss_start' undeclared (first use in this function)
../mm/kmemleak.c:1335:26: error: '__bss_stop' undeclared (first use in this function)
../mm/kmemleak.c:1340:14: error: '__per_cpu_start' undeclared (first use in this function)
../mm/kmemleak.c:1341:7: error: '__per_cpu_end' undeclared (first use in this function)
../kernel/locking/lockdep.c:612:41: error: '_stext' undeclared (first use in this function)
../kernel/locking/lockdep.c:613:34: error: '_end' undeclared (first use in this function)
../kernel/locking/lockdep.c:622:6: error: implicit declaration of function 'arch_is_kernel_data' [-Werror=implicit-function-declaration]
../kernel/profile.c:106:14: error: '_etext' undeclared (first use in this function)
../kernel/profile.c:106:23: error: '_stext' undeclared (first use in this function)
../kernel/profile.c:287:32: error: '_stext' undeclared (first use in this function)
../kernel/module.c:907:35: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../kernel/kexec.c:1950:20: error: '_stext' undeclared (first use in this function)
../net/core/sock.c:708:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:906:7: error: 'SO_ATTACH_BPF' undeclared (first use in this function)
../net/core/sock.c:923:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:962:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:967:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:980:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1055:7: error: 'SO_REUSEPORT' undeclared (first use in this function)
../net/core/sock.c:1213:7: error: 'SO_GET_FILTER' undeclared (first use in this function)
../net/core/sock.c:1220:7: error: 'SO_LOCK_FILTER' undeclared (first use in this function)
../net/core/sock.c:1224:7: error: 'SO_BPF_EXTENSIONS' undeclared (first use in this function)
../net/core/sock.c:1228:7: error: 'SO_SELECT_ERR_QUEUE' undeclared (first use in this function)
../net/core/sock.c:1233:7: error: 'SO_BUSY_POLL' undeclared (first use in this function)
../net/core/sock.c:1238:7: error: 'SO_MAX_PACING_RATE' undeclared (first use in this function)
../net/core/sock.c:1242:7: error: 'SO_INCOMING_CPU' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:52:35: error: 'SCTP_CONNTRACK_MAX' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: 'SCTP_CONNTRACK_CLOSED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: 'SCTP_CONNTRACK_COOKIE_WAIT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: 'SCTP_CONNTRACK_COOKIE_ECHOED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: 'SCTP_CONNTRACK_ESTABLISHED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: 'SCTP_CONNTRACK_SHUTDOWN_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: 'SCTP_CONNTRACK_SHUTDOWN_RECD' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: 'SCTP_CONNTRACK_SHUTDOWN_ACK_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:180:22: error: storage size of 'state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:237:26: error: parameter 2 ('cur_state') has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:236:12: error: function declaration isn't a prototype [-Werror=strict-prototypes]
../net/netfilter/nf_conntrack_proto_sctp.c:310:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:310:33: error: storage size of 'old_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:337:26: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../net/netfilter/nf_conntrack_proto_sctp.c:415:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:441:9: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../lib/dma-debug.c:1184:25: error: '_stext' undeclared (first use in this function)
../lib/dma-debug.c:1184:33: error: '_etext' undeclared (first use in this function)
../lib/dma-debug.c:1185:25: error: '__start_rodata' undeclared (first use in this function)
../lib/dma-debug.c:1185:41: error: '__end_rodata' undeclared (first use in this function)
../drivers/hwtracing/coresight/coresight-etm3x.c:1769:32: error: '_stext' undeclared (first use in this function)
../drivers/hwtracing/coresight/coresight-etm3x.c:1770:32: error: '_etext' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../net/sunrpc/xprtsock.c:1635:38: error: 'SO_REUSEPORT' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1638:26: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1647:41: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1677:17: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1771:25: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1776:5: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1779:18: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1788:5: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:2134:6: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/input/misc/ims-pcu.c:2135:6: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/misc/kgdbts.c:226:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../arch/arm/include/asm/parport.h:12:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'parport_pc_find_isa_ports'
../arch/arm/include/asm/parport.h:13:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'parport_pc_find_nonpci_ports'
../drivers/parport/parport_pc.c:3066:2: error: implicit declaration of function 'parport_pc_find_nonpci_ports' [-Werror=implicit-function-declaration]
../drivers/net/usb/r8152.c:4091:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/r8152.c:4092:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/hso.c:1795:14: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1807:24: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/hso.c:1852:7: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1921:7: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:76:19: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:77:6: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:84:17: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:86:17: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:90:4: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:170:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:176:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/cdc_ether.c:182:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:190:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/net/usb/cdc_ether.c:199:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:205:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ether.c:257:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:263:19: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ether.c:274:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:282:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/cdc_ether.c:288:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:296:14: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/cdc_ether.c:362:17: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:439:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:450:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:455:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:461:4: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:538:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:539:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:626:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:357:37: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:358:4: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/net/usb/rndis_host.c:106:30: error: storage size of 'notification' isn't known
../drivers/net/usb/rndis_host.c:130:3: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/rndis_host.c:157:4: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:163:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:169:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/zaurus.c:182:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:188:18: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/zaurus.c:268:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:269:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:319:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/cdc-phonet.c:355:9: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc-phonet.c:373:50: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/sierra_net.c:340:33: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:504:5: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:611:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/sierra_net.c:617:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:618:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:621:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/cdc_ncm.c:153:8: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:176:60: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:346:29: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:408:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_ncm.c:410:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ncm_desc'
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:435:37: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ncm.c:448:29: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:459:27: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:461:31: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:464:12: error: 'USB_CDC_NCM_CRC_NOT_APPENDED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:476:7: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:478:31: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:481:12: error: 'USB_CDC_NCM_NTB16_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:507:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:507:94: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:530:29: error: 'USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:534:29: error: 'USB_CDC_GET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:546:30: error: 'USB_CDC_SET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:558:49: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_extended_desc'
../drivers/net/usb/cdc_ncm.c:577:13: error: 'USB_CDC_NCM_NDP_ALIGN_MIN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:757:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:758:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ncm.c:772:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:780:8: error: 'USB_CDC_NCM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:787:8: error: 'USB_CDC_MBIM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:794:8: error: 'USB_CDC_MBIM_EXTENDED_TYPE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1029:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1034:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1091:70: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1091:108: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:36: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1145:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1145:64: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1296:56: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1319:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1320:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1327:11: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1327:40: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1364:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1378:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1379:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1382:14: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1383:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1418:40: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1426:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1427:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1480:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1507:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1520:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1532:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1534:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1538:19: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1592:26: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_ncm.c:1593:26: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/lg-vl600.c:332:5: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/lg-vl600.c:332:32: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:255:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:260:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/qmi_wwan.c:266:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:271:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:278:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:283:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:307:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:319:28: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:500:33: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:501:33: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:171:34: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_mbim.c:225:28: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:281:23: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:438:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_mbim.c:439:19: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:446:19: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:459:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:460:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:593:39: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:593:61: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:597:58: error: 'USB_CDC_SUBCLASS_MBIM' undeclared here (not in a function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:52:61: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:57:15: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:493:26: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:14: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:580:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:581:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:584:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:587:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:601:24: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:602:34: error: implicit declaration of function 'macvtap16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/macvtap.c:622:29: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:631:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:633:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:635:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:639:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:641:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:644:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:653:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:670:9: error: variable 'vnet_hdr' has initializer but incomplete type
../drivers/net/macvtap.c:670:24: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:690:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:811:25: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:1077:23: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/staging/gdm724x/gdm_usb.c:39:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/staging/gdm724x/gdm_mux.c:41:24: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:209:56: error: unknown type name '__virtio16'
../drivers/net/tun.c:214:15: error: unknown type name '__virtio16'
../drivers/net/tun.c:1041:9: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1041:24: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1068:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1069:7: error: implicit declaration of function 'tun16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/tun.c:1170:22: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1172:27: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1173:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1176:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1179:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1274:10: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1274:25: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1285:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1287:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1289:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1303:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1305:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1308:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1313:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:1653:29: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/tun.c:2043:33: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:154:34: error: field 'hdr' has incomplete type
../drivers/net/virtio_net.c:269:27: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:360:16: error: implicit declaration of function 'virtio16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:480:23: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:486:30: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:494:27: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:496:32: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:497:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:500:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:503:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:613:32: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:787:21: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:872:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:873:25: error: implicit declaration of function 'cpu_to_virtio16' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:887:24: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:889:24: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:891:24: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:895:25: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:897:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:987:29: error: storage size of 'ctrl' isn't known
../drivers/net/virtio_net.c:988:2: error: unknown type name 'virtio_net_ctrl_ack'
../drivers/net/virtio_net.c:992:10: error: implicit declaration of function 'virtio_has_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:992:39: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1011:20: error: 'VIRTIO_NET_OK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1035:31: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1037:33: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1038:8: error: 'VIRTIO_NET_CTRL_MAC_ADDR_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1043:38: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1044:32: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1049:4: error: implicit declaration of function 'virtio_cwrite8' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1050:28: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1111:32: error: 'VIRTIO_NET_CTRL_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1112:7: error: 'VIRTIO_NET_CTRL_ANNOUNCE_ACK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1120:28: error: storage size of 's' isn't known
../drivers/net/virtio_net.c:1123:52: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1129:32: error: 'VIRTIO_NET_CTRL_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1130:7: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1171:36: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1179:32: error: 'VIRTIO_NET_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1180:7: error: 'VIRTIO_NET_CTRL_RX_PROMISC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1187:7: error: 'VIRTIO_NET_CTRL_RX_ALLMULTI' undeclared (first use in this function)
../drivers/net/virtio_net.c:1195:29: error: dereferencing pointer to incomplete type 'struct virtio_net_ctrl_mac'
../drivers/net/virtio_net.c:1203:22: error: implicit declaration of function 'cpu_to_virtio32' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1222:32: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1223:7: error: 'VIRTIO_NET_CTRL_MAC_TABLE_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1237:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1238:7: error: 'VIRTIO_NET_CTRL_VLAN_ADD' undeclared (first use in this function)
../drivers/net/virtio_net.c:1251:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1252:7: error: 'VIRTIO_NET_CTRL_VLAN_DEL' undeclared (first use in this function)
../drivers/net/virtio_net.c:1263:4: error: implicit declaration of function 'virtqueue_set_affinity' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1338:26: error: implicit declaration of function 'virtio_bus_name' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:6: error: implicit declaration of function 'virtio_cread_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:37: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1432:6: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1435:10: error: 'VIRTIO_NET_S_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1441:7: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:1529:14: error: dereferencing pointer to incomplete type 'const struct virtio_config_ops'
../drivers/net/virtio_net.c:1536:2: error: unknown type name 'vq_callback_t'
../drivers/net/virtio_net.c:1547:36: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1583:36: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1709:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1710:29: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1712:29: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1714:29: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1716:29: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1717:29: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1742:35: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1743:8: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1747:31: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1748:24: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1749:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1766:31: error: 'VIRTIO_NET_F_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1772:32: error: 'VIRTIO_NET_F_GSO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1777:32: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1779:32: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1781:32: error: 'VIRTIO_NET_F_HOST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1783:32: error: 'VIRTIO_NET_F_HOST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1792:31: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1798:31: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1799:3: error: implicit declaration of function 'virtio_cread_bytes' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1800:24: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1825:31: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1826:31: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1827:31: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1828:31: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1831:31: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared (first use in this function)
../drivers/net/virtio_net.c:1835:31: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1836:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:1838:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/virtio_net.c:1840:31: error: 'VIRTIO_F_ANY_LAYOUT' undeclared (first use in this function)
../drivers/net/virtio_net.c:1872:2: error: implicit declaration of function 'virtio_device_ready' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1896:35: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1900:16: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:2015:4: error: 'VIRTIO_ID_NET' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: 'VIRTIO_NET_F_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2020:21: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:21: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:2: error: 'VIRTIO_NET_F_GSO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:20: error: 'VIRTIO_NET_F_MAC' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:20: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:2: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:26: error: 'VIRTIO_NET_F_HOST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:49: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:49: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:2: error: 'VIRTIO_NET_F_HOST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:25: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:25: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:50: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:50: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:2: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:26: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:2: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:26: error: 'VIRTIO_NET_F_STATUS' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:47: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:47: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:2: error: 'VIRTIO_NET_F_CTRL_RX' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:24: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:24: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:2: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:31: error: 'VIRTIO_NET_F_MQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:31: error: initializer element is not constant
../drivers/net/virtio_net.c:2028:2: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared here (not in a function)
../drivers/net/virtio_net.c:2028:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2029:2: error: 'VIRTIO_F_ANY_LAYOUT' undeclared here (not in a function)
../drivers/net/virtio_net.c:2029:2: error: initializer element is not constant
../drivers/usb/class/cdc-acm.h:104:29: error: field 'line' has incomplete type
../drivers/usb/class/cdc-acm.c:156:27: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:310:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:311:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:312:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:317:7: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:547:31: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:163:20: error: 'USB_CDC_REQ_SEND_BREAK' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:984:29: error: storage size of 'newline' isn't known
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1166:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1167:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1176:8: error: 'USB_CDC_COUNTRY_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1177:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:1181:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1183:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1188:8: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1230:60: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1345:22: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1437:35: error: dereferencing pointer to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1668:19: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1669:3: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1883:3: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1887:3: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1889:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1891:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101_WAKE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1893:3: error: 'USB_CDC_ACM_PROTO_AT_GSM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1895:3: error: 'USB_CDC_ACM_PROTO_AT_3G' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1897:3: error: 'USB_CDC_ACM_PROTO_AT_CDMA' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:41:25: error: 'USB_CDC_SUBCLASS_DMM' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:238:34: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:244:10: error: switch quantity not an integer
../drivers/usb/class/cdc-wdm.c:245:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:251:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:255:6: error: request for member 'wValue' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:257:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:265:6: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:405:18: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:824:24: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:892:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:894:8: error: 'USB_CDC_DMM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:896:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_dmm_desc'
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:60:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:105:23: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:106:23: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:133:15: error: variable 'acm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:134:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:134:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_acm.c:135:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:137:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_acm.c:141:1: error: variable 'acm_call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:142:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:142:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:143:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:145:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:149:15: error: variable 'acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:150:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:150:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_acm.c:151:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:153:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:153:20: error: 'USB_CDC_CAP_LINE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:156:15: error: variable 'acm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:157:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:157:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:158:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:336:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:362:6: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:363:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:374:6: error: 'USB_CDC_REQ_GET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:379:12: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:385:6: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:504:32: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:514:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:550:32: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:643:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:651:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:652:2: error: invalid use of undefined type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:677:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:119:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:1055:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/u_serial.c:1103:29: error: storage size of 'coding' isn't known
../drivers/usb/gadget/function/u_serial.c:1110:23: error: 'USB_CDC_NO_PARITY' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.c:1111:21: error: 'USB_CDC_1_STOP_BITS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_obex.c:84:24: error: 'USB_CDC_SUBCLASS_OBEX' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:107:15: error: variable 'obex_cdc_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:108:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:108:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_obex.c:109:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:111:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_obex.c:114:15: error: variable 'obex_cdc_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:115:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:115:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:116:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:118:2: error: unknown field 'bMasterInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:119:2: error: unknown field 'bSlaveInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:122:15: error: variable 'obex_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:123:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:123:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_obex_desc'
../drivers/usb/gadget/function/f_obex.c:124:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:24: error: 'USB_CDC_OBEX_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:126:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_obex.c:341:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:350:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_ether.c:479:22: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:519:12: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:521:12: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:125:15: error: variable 'ntb_parameters' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:126:2: error: unknown field 'wLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:127:2: error: unknown field 'bmNtbFormatsSupported' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:122:28: error: 'USB_CDC_NCM_NTB16_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:123:6: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:128:2: error: unknown field 'dwNtbInMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:129:2: error: unknown field 'wNdpInDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:130:2: error: unknown field 'wNdpInPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:131:2: error: unknown field 'wNdpInAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:133:2: error: unknown field 'dwNtbOutMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:134:2: error: unknown field 'wNdpOutDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:135:2: error: unknown field 'wNdpOutPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:136:2: error: unknown field 'wNdpOutAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:155:23: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:156:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:174:15: error: variable 'ncm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:175:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:175:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ncm.c:176:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:179:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:182:15: error: variable 'ncm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:183:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:183:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:184:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:190:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:191:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:191:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:192:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:197:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:198:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:199:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:200:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:205:15: error: variable 'ncm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:206:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:206:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_desc'
../drivers/usb/gadget/function/f_ncm.c:207:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:24: error: 'USB_CDC_NCM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:210:2: error: unknown field 'bcdNcmVersion' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:212:2: error: unknown field 'bmNetworkCapabilities' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:203:16: error: 'USB_CDC_NCM_NCAP_ETH_FILTER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:203:46: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:226:24: error: 'USB_CDC_NCM_PROTO_NTB' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:387:15: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:388:15: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:389:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/usb/gadget/function/f_ncm.c:390:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/usb/gadget/function/f_ncm.c:391:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/usb/gadget/function/f_ncm.c:403:15: error: 'USB_CDC_NCM_NTH32_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:404:15: error: 'USB_CDC_NCM_NDP32_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:405:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth32'
../drivers/usb/gadget/function/f_ncm.c:406:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp32'
../drivers/usb/gadget/function/f_ncm.c:407:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe32'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:492:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:492:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:506:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:567:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:598:16: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:629:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:656:5: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:660:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:661:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:667:5: error: 'USB_CDC_GET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:678:5: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:691:5: error: 'USB_CDC_GET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:705:5: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:725:5: error: 'USB_CDC_GET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:739:5: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1377:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:1388:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:1397:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:111:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:112:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:130:15: error: variable 'ecm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:131:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:131:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ecm.c:132:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:135:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:138:15: error: variable 'ecm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:139:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:139:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:140:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:146:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:147:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:147:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:148:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:153:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:154:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:155:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:156:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:396:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:396:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:410:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:462:9: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:484:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:724:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:735:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:744:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_phonet.c:80:1: error: variable 'pn_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:81:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:81:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:82:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:84:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:88:1: error: variable 'pn_phonet_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:89:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:89:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:90:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:91:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:92:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:96:1: error: variable 'pn_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:97:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:97:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:98:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:518:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:525:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_eem.c:53:24: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_eem.c:54:24: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_subset.c:87:24: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:92:15: error: variable 'mdlm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:93:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:93:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_subset.c:94:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:97:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_subset.c:100:15: error: variable 'mdlm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:101:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:101:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/usb/gadget/function/f_subset.c:102:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:24: error: 'USB_CDC_MDLM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:105:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:2: error: unknown field 'bGUID' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:11: error: extra brace group at end of initializer
../drivers/usb/gadget/function/f_subset.c:119:2: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:126:15: error: variable 'ether_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_subset.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:133:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_subset.c:134:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_subset.c:135:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:136:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:331:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/f_rndis.c:121:26: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:122:26: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:126:15: error: variable 'header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_rndis.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:131:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:134:15: error: variable 'call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:135:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:135:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_rndis.c:136:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:139:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:140:2: error: unknown field 'bDataInterface' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:143:15: error: variable 'rndis_acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:144:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:144:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_rndis.c:145:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:148:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:151:15: error: variable 'rndis_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:152:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:152:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:153:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:182:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:183:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:483:6: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:494:6: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:727:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:739:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/serial/visor.c:452:4: error: 'USB_CDC_SUBCLASS_ACM' undeclared (first use in this function)
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/vhost/net.c:64:14: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/vhost/net.c:531:9: error: variable 'hdr' has initializer but incomplete type
../drivers/vhost/net.c:532:3: error: unknown field 'flags' specified in initializer
../drivers/vhost/net.c:533:3: error: unknown field 'gso_type' specified in initializer
../drivers/vhost/net.c:533:15: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/vhost/net.c:531:24: error: storage size of 'hdr' isn't known
../drivers/vhost/net.c:1004:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/vhost/net.c:1005:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
Warnings:
../arch/arm/mach-cns3xxx/pcie.c:266:1: warning: the frame size of 1080 bytes is larger than 1024 bytes [-Wframe-larger-than=]
../mm/util.c:24:1: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/ata/pata_hpt366.c:376:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:379:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:382:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../arch/arm/include/asm/cmpxchg.h:205:3: warning: value computed is not used [-Wunused-value]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../sound/pci/oxygen/oxygen_mixer.c:91:43: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../net/netfilter/nf_conntrack_proto_sctp.c:180:22: warning: unused variable 'state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:310:33: warning: unused variable 'old_state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:310:22: warning: unused variable 'new_state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:415:22: warning: unused variable 'new_state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:52:21: warning: 'sctp_timeouts' defined but not used [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:104:17: warning: 'sctp_conntracks' defined but not used [-Wunused-variable]
../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
../net/packet/af_packet.c:2420:37: warning: excess elements in struct initializer
../net/packet/af_packet.c:2420:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../net/packet/af_packet.c:2959:38: warning: excess elements in struct initializer
../net/packet/af_packet.c:2959:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c:975:1: warning: the frame size of 1192 bytes is larger than 1024 bytes [-Wframe-larger-than=]
../lib/vsprintf.c:1474:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
../drivers/infiniband/hw/cxgb4/mem.c:147:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/trace/ftrace.h:28:0: warning: "TRACE_SYSTEM_STRING" redefined
../drivers/media/platform/coda/./trace.h:12:0: warning: "TRACE_SYSTEM_STRING" redefined
../drivers/media/platform/s3c-camif/camif-capture.c:118:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/media/platform/s3c-camif/camif-capture.c:134:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/rtc/rtc-armada38x.c:91:22: warning: unused variable 'flags' [-Wunused-variable]
../drivers/net/usb/hso.c:1857:1: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/hso.c:1926:1: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/rndis_host.c:106:30: warning: unused variable 'notification' [-Wunused-variable]
../drivers/net/usb/cdc_ncm.c:1478:15: warning: 'struct usb_cdc_speed_change' declared inside parameter list
../drivers/net/usb/cdc_ncm.c:1478:15: warning: its scope is only this definition or declaration, which is probably not what you want
../drivers/net/usb/cdc_ncm.c:1513:9: warning: passing argument 2 of 'cdc_ncm_speed_change' from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
../drivers/net/macvtap.c:576:17: warning: 'struct virtio_net_hdr' declared inside parameter list
../drivers/net/macvtap.c:620:16: warning: 'struct virtio_net_hdr' declared inside parameter list
../drivers/net/macvtap.c:670:37: warning: excess elements in struct initializer
../drivers/net/macvtap.c:670:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../drivers/net/macvtap.c:811:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../drivers/scsi/be2iscsi/be_main.c:3168:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/scsi/qla2xxx/qla_target.c:3086:6: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type 'uint32_t {aka unsigned int}' [-Wformat=]
../drivers/scsi/qla2xxx/qla_target.c:3083:17: warning: unused variable 'se_cmd' [-Wunused-variable]
../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
../drivers/net/tun.c:1041:32: warning: excess elements in struct initializer
../drivers/net/tun.c:1041:24: warning: unused variable 'gso' [-Wunused-variable]
../drivers/net/tun.c:1274:33: warning: excess elements in struct initializer
../drivers/net/tun.c:1274:25: warning: unused variable 'gso' [-Wunused-variable]
../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
../drivers/net/virtio_net.c:987:29: warning: unused variable 'ctrl' [-Wunused-variable]
../drivers/net/virtio_net.c:1120:28: warning: unused variable 's' [-Wunused-variable]
../drivers/net/virtio_net.c:1338:26: warning: passing argument 2 of 'strlcpy' makes pointer from integer without a cast [-Wint-conversion]
../drivers/net/virtio_net.c:1568:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/net/virtio_net.c:1569:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" [-Wcpp]
../drivers/usb/class/cdc-acm.c:984:29: warning: unused variable 'newline' [-Wunused-variable]
../drivers/usb/class/cdc-acm.c:158:1: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/usb/class/cdc-wdm.c:238:25: warning: comparison between pointer and integer
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../drivers/usb/class/cdc-wdm.c:264:4: warning: format '%d' expects argument of type 'int', but argument 3 has type 'const struct usb_device_id *' [-Wformat=]
../drivers/usb/class/cdc-wdm.c:405:16: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
../drivers/usb/class/cdc-wdm.c:824:22: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/big_endian.h:35:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../drivers/usb/gadget/function/f_acm.c:134:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:136:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:142:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:144:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:145:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:150:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:152:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:153:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:157:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:159:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/u_serial.c:1103:29: warning: unused variable 'coding' [-Wunused-variable]
../drivers/usb/gadget/function/f_obex.c:108:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:110:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:115:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:117:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:118:23: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:119:22: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:123:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:125:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/u_ether.c:480:1: warning: control reaches end of non-void function [-Wreturn-type]
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:175:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:177:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:183:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:185:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:191:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:193:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:200:25: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:206:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:208:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:203:15: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:131:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:133:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:139:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:141:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:147:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:149:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:156:25: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:81:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:83:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:89:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:67:29: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:97:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:99:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:93:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:95:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:101:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:103:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:106:11: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:127:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:129:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:136:25: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:331:2: warning: statement with no effect [-Wunused-value]
../drivers/usb/gadget/function/f_subset.c:504:24: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
../drivers/usb/gadget/function/f_rndis.c:127:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:129:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/big_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:135:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:137:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:139:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:140:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:144:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:146:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:148:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:152:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:154:24: warning: excess elements in struct initializer
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/virtio_net.h:9:6: warning: 'struct virtio_net_hdr' declared inside parameter list
../include/linux/virtio_net.h:9:6: warning: its scope is only this definition or declaration, which is probably not what you want
../include/linux/virtio_net.h:59:8: warning: 'struct virtio_net_hdr' declared inside parameter list
../drivers/vhost/net.c:532:12: warning: excess elements in struct initializer
../drivers/vhost/net.c:533:15: warning: excess elements in struct initializer
../drivers/vhost/net.c:531:24: warning: unused variable 'hdr' [-Wunused-variable]
-------------------------------------------------------------------------------
arm-allnoconfig : FAIL, 42 errors, 2 warnings, 0 section mismatches
Errors:
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
Warnings:
../mm/util.c:24:1: warning: control reaches end of non-void function [-Wreturn-type]
../lib/vsprintf.c:1474:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
-------------------------------------------------------------------------------
x86_64-allnoconfig : FAIL, 14 errors, 1 warnings, 0 section mismatches
Errors:
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:196:18: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:8: error: 'RTIT_CTL_TOPA' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:24: error: 'RTIT_CTL_BRANCH_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:45: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:206:10: error: 'RTIT_CTL_OS' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:208:10: error: 'RTIT_CTL_USR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:221:10: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:519:15: error: 'RTIT_STATUS_ERROR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:525:15: error: 'RTIT_STATUS_STOPPED' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:1071:22: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
Warnings:
../arch/x86/kernel/cpu/perf_event_intel_pt.c:197:1: warning: control reaches end of non-void function [-Wreturn-type]
-------------------------------------------------------------------------------
arm-multi_v4t_defconfig : FAIL, 54 errors, 2 warnings, 0 section mismatches
Errors:
../arch/arm/mm/init.c:235:24: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/init.c:235:33: error: '_end' undeclared (first use in this function)
../arch/arm/mm/init.c:536:16: error: '_text' undeclared (first use in this function)
../arch/arm/mm/init.c:536:23: error: '_etext' undeclared (first use in this function)
../arch/arm/mm/init.c:537:16: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:537:30: error: '__init_end' undeclared (first use in this function)
../arch/arm/mm/init.c:538:16: error: '_sdata' undeclared (first use in this function)
../arch/arm/mm/init.c:538:24: error: '_edata' undeclared (first use in this function)
../arch/arm/mm/init.c:539:16: error: '__bss_start' undeclared (first use in this function)
../arch/arm/mm/init.c:539:29: error: '__bss_stop' undeclared (first use in this function)
../arch/arm/mm/init.c:723:18: error: '__init_begin' undeclared (first use in this function)
../arch/arm/mm/init.c:723:32: error: '__init_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:769:37: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:770:37: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:771:37: error: '_sdata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:772:37: error: '_end' undeclared (first use in this function)
../arch/arm/kernel/setup.c:928:39: error: '_text' undeclared (first use in this function)
../arch/arm/kernel/setup.c:929:39: error: '_etext' undeclared (first use in this function)
../arch/arm/kernel/setup.c:930:39: error: '_edata' undeclared (first use in this function)
../arch/arm/kernel/setup.c:931:35: error: '_end' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1332:47: error: '_stext' undeclared (first use in this function)
../arch/arm/mm/mmu.c:1333:43: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5582:13: error: '_etext' undeclared (first use in this function)
../mm/page_alloc.c:5582:22: error: '_stext' undeclared (first use in this function)
../mm/page_alloc.c:5583:13: error: '_edata' undeclared (first use in this function)
../mm/page_alloc.c:5583:22: error: '_sdata' undeclared (first use in this function)
../mm/page_alloc.c:5584:11: error: '__end_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5584:26: error: '__start_rodata' undeclared (first use in this function)
../mm/page_alloc.c:5585:13: error: '__bss_stop' undeclared (first use in this function)
../mm/page_alloc.c:5585:26: error: '__bss_start' undeclared (first use in this function)
../mm/page_alloc.c:5586:19: error: '__init_end' undeclared (first use in this function)
../mm/page_alloc.c:5586:32: error: '__init_begin' undeclared (first use in this function)
../mm/page_alloc.c:5587:19: error: '_einittext' undeclared (first use in this function)
../mm/page_alloc.c:5587:32: error: '_sinittext' undeclared (first use in this function)
../mm/util.c:22:32: error: '__start_rodata' undeclared (first use in this function)
../mm/util.c:23:25: error: '__end_rodata' undeclared (first use in this function)
../kernel/extable.c:64:29: error: '_sinittext' undeclared (first use in this function)
../kernel/extable.c:65:28: error: '_einittext' undeclared (first use in this function)
../kernel/extable.c:72:29: error: '_stext' undeclared (first use in this function)
../kernel/extable.c:73:28: error: '_etext' undeclared (first use in this function)
../kernel/extable.c:94:29: error: '_sdata' undeclared (first use in this function)
../kernel/extable.c:95:28: error: '_edata' undeclared (first use in this function)
../kernel/extable.c:140:25: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:57:29: error: '_sinittext' undeclared (first use in this function)
../kernel/kallsyms.c:58:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:65:30: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:65:63: error: '_etext' undeclared (first use in this function)
../kernel/kallsyms.c:66:6: error: implicit declaration of function 'arch_is_kernel_text' [-Werror=implicit-function-declaration]
../kernel/kallsyms.c:73:29: error: '_stext' undeclared (first use in this function)
../kernel/kallsyms.c:73:62: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:257:32: error: '_einittext' undeclared (first use in this function)
../kernel/kallsyms.c:259:32: error: '_end' undeclared (first use in this function)
../kernel/kallsyms.c:261:32: error: '_etext' undeclared (first use in this function)
../lib/vsprintf.c:1474:9: error: implicit declaration of function 'dereference_function_descriptor' [-Werror=implicit-function-declaration]
Warnings:
../mm/util.c:24:1: warning: control reaches end of non-void function [-Wreturn-type]
../lib/vsprintf.c:1474:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
-------------------------------------------------------------------------------
x86_64-allmodconfig : FAIL, 1049 errors, 219 warnings, 0 section mismatches
Errors:
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:196:18: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:8: error: 'RTIT_CTL_TOPA' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:24: error: 'RTIT_CTL_BRANCH_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:203:45: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:206:10: error: 'RTIT_CTL_OS' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:208:10: error: 'RTIT_CTL_USR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:25: error: 'RTIT_CTL_TSC_EN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:173:43: error: 'RTIT_CTL_DISRETC' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:221:10: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:519:15: error: 'RTIT_STATUS_ERROR' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:525:15: error: 'RTIT_STATUS_STOPPED' undeclared (first use in this function)
../arch/x86/kernel/cpu/perf_event_intel_pt.c:1071:22: error: 'RTIT_CTL_TRACEEN' undeclared (first use in this function)
../drivers/cpufreq/intel_pstate.c:594:9: error: 'MSR_NHM_TURBO_RATIO_LIMIT' undeclared (first use in this function)
../drivers/cpufreq/intel_pstate.c:623:9: error: 'MSR_NHM_TURBO_RATIO_LIMIT' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../drivers/input/misc/ims-pcu.c:1638:26: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1647:41: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1677:17: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/input/misc/ims-pcu.c:1771:25: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1776:5: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:1779:18: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/input/misc/ims-pcu.c:1788:5: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/input/misc/ims-pcu.c:2134:6: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/input/misc/ims-pcu.c:2135:6: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:52:35: error: 'SCTP_CONNTRACK_MAX' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: 'SCTP_CONNTRACK_CLOSED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:53:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: 'SCTP_CONNTRACK_COOKIE_WAIT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:54:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: 'SCTP_CONNTRACK_COOKIE_ECHOED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:55:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: 'SCTP_CONNTRACK_ESTABLISHED' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:56:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: 'SCTP_CONNTRACK_SHUTDOWN_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:57:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: 'SCTP_CONNTRACK_SHUTDOWN_RECD' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:58:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: 'SCTP_CONNTRACK_SHUTDOWN_ACK_SENT' undeclared here (not in a function)
../net/netfilter/nf_conntrack_proto_sctp.c:59:3: error: array index in initializer not of integer type
../net/netfilter/nf_conntrack_proto_sctp.c:180:22: error: storage size of 'state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:237:26: error: parameter 2 ('cur_state') has incomplete type
../net/netfilter/nf_conntrack_proto_sctp.c:236:12: error: function declaration isn't a prototype [-Werror=strict-prototypes]
../net/netfilter/nf_conntrack_proto_sctp.c:310:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:310:33: error: storage size of 'old_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:337:26: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../net/netfilter/nf_conntrack_proto_sctp.c:415:22: error: storage size of 'new_state' isn't known
../net/netfilter/nf_conntrack_proto_sctp.c:441:9: error: 'SCTP_CONNTRACK_NONE' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../net/packet/af_packet.c:2420:9: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2420:24: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2471:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2483:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2484:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2485:9: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2488:9: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2491:9: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2959:10: error: variable 'vnet_hdr' has initializer but incomplete type
../net/packet/af_packet.c:2959:25: error: storage size of 'vnet_hdr' isn't known
../net/packet/af_packet.c:2977:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../net/packet/af_packet.c:2979:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../net/packet/af_packet.c:2981:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../net/packet/af_packet.c:2987:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../net/packet/af_packet.c:2989:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../net/packet/af_packet.c:2992:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../net/packet/af_packet.c:2998:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../include/linux/netfilter/nf_conntrack_sctp.h:8:22: error: field 'state' has incomplete type
../drivers/staging/gdm724x/gdm_usb.c:39:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/r8152.c:4091:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/r8152.c:4092:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/hso.c:1795:14: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1807:24: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/hso.c:1852:7: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/hso.c:1921:7: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/staging/gdm724x/gdm_mux.c:41:24: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:76:19: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:77:6: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:84:17: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:86:17: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:90:4: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:170:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:176:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/cdc_ether.c:182:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:190:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/net/usb/cdc_ether.c:199:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:205:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ether.c:257:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:263:19: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ether.c:274:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:282:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/cdc_ether.c:288:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:296:14: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/cdc_ether.c:362:17: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:439:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:450:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:455:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ether.c:461:4: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ether.c:538:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:539:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_ether.c:626:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:357:37: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/net/usb/cdc_eem.c:358:4: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.h:104:29: error: field 'line' has incomplete type
../drivers/usb/class/cdc-acm.c:156:27: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:310:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:311:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-acm.c:312:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:317:7: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:547:31: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:163:20: error: 'USB_CDC_REQ_SEND_BREAK' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:984:29: error: storage size of 'newline' isn't known
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1166:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1167:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1176:8: error: 'USB_CDC_COUNTRY_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1177:25: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:1181:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1183:8: error: 'USB_CDC_ACM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1188:8: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1230:60: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/class/cdc-acm.c:1345:22: error: 'USB_CDC_CAP_LINE' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1437:35: error: dereferencing pointer to incomplete type 'struct usb_cdc_country_functional_desc'
../drivers/usb/class/cdc-acm.c:161:20: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/class/cdc-acm.c:1668:19: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1669:3: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1883:3: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1887:3: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1889:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1891:3: error: 'USB_CDC_ACM_PROTO_AT_PCCA101_WAKE' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1893:3: error: 'USB_CDC_ACM_PROTO_AT_GSM' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1895:3: error: 'USB_CDC_ACM_PROTO_AT_3G' undeclared here (not in a function)
../drivers/usb/class/cdc-acm.c:1897:3: error: 'USB_CDC_ACM_PROTO_AT_CDMA' undeclared here (not in a function)
../drivers/net/usb/rndis_host.c:106:30: error: storage size of 'notification' isn't known
../drivers/net/usb/rndis_host.c:130:3: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/rndis_host.c:157:4: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:163:8: error: 'USB_CDC_MDLM_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:169:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/net/usb/zaurus.c:182:8: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared (first use in this function)
../drivers/net/usb/zaurus.c:188:18: error: dereferencing pointer to incomplete type 'struct usb_cdc_mdlm_detail_desc'
../drivers/net/usb/zaurus.c:268:24: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:269:24: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/zaurus.c:319:4: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:41:25: error: 'USB_CDC_SUBCLASS_DMM' undeclared here (not in a function)
../drivers/usb/class/cdc-wdm.c:238:34: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/class/cdc-wdm.c:244:12: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:244:10: error: switch quantity not an integer
../drivers/usb/class/cdc-wdm.c:245:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:248:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:248:43: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:251:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:255:6: error: request for member 'wValue' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:257:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:265:6: error: request for member 'bNotificationType' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:266:18: error: request for member 'wIndex' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:267:18: error: request for member 'wLength' in something not a structure or union
../drivers/usb/class/cdc-wdm.c:405:18: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:824:24: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:892:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:894:8: error: 'USB_CDC_DMM_TYPE' undeclared (first use in this function)
../drivers/usb/class/cdc-wdm.c:896:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_dmm_desc'
../drivers/usb/class/cdc-wdm.c:896:29: error: request for member 'wMaxCommand' in something not a structure or union
../drivers/net/usb/cdc-phonet.c:355:9: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc-phonet.c:373:50: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/sierra_net.c:340:33: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:504:5: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:611:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/sierra_net.c:617:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:618:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/sierra_net.c:621:7: error: 'USB_CDC_NOTIFY_RESPONSE_AVAILABLE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/cdc_ncm.c:153:8: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:176:60: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:346:29: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:408:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_ncm.c:410:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ncm_desc'
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:435:37: error: dereferencing pointer to incomplete type 'const struct usb_cdc_ether_desc'
../drivers/net/usb/cdc_ncm.c:448:29: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:459:27: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:461:31: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:464:12: error: 'USB_CDC_NCM_CRC_NOT_APPENDED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:476:7: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:478:31: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:481:12: error: 'USB_CDC_NCM_NTB16_FORMAT' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:507:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:507:94: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:530:29: error: 'USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:534:29: error: 'USB_CDC_GET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:546:30: error: 'USB_CDC_SET_MAX_DATAGRAM_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:558:49: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_extended_desc'
../drivers/net/usb/cdc_ncm.c:577:13: error: 'USB_CDC_NCM_NDP_ALIGN_MIN_SIZE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:757:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:758:24: error: dereferencing pointer to incomplete type 'const struct usb_cdc_union_desc'
../drivers/net/usb/cdc_ncm.c:772:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:780:8: error: 'USB_CDC_NCM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:787:8: error: 'USB_CDC_MBIM_TYPE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:794:8: error: 'USB_CDC_MBIM_EXTENDED_TYPE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1029:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1034:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:38: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1055:73: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1091:70: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1091:108: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1092:36: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1093:45: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1145:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1145:64: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1150:48: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1296:56: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1319:28: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1320:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1327:11: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/net/usb/cdc_ncm.c:1327:40: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1364:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1378:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1379:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1382:14: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_ncm.c:1383:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1418:40: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1426:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1427:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_ncm.c:1480:38: error: dereferencing pointer to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1507:34: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1520:7: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1532:7: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/net/usb/cdc_ncm.c:1534:13: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_speed_change'
../drivers/net/usb/cdc_ncm.c:1538:19: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/net/usb/cdc_ncm.c:1592:26: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_ncm.c:1593:26: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../drivers/net/usb/lg-vl600.c:332:5: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/lg-vl600.c:332:32: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:255:8: error: 'USB_CDC_HEADER_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:260:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/net/usb/qmi_wwan.c:266:8: error: 'USB_CDC_UNION_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:271:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:278:8: error: 'USB_CDC_ETHERNET_TYPE' undeclared (first use in this function)
../drivers/net/usb/qmi_wwan.c:283:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:307:20: error: dereferencing pointer to incomplete type 'struct usb_cdc_union_desc'
../drivers/net/usb/qmi_wwan.c:319:28: error: dereferencing pointer to incomplete type 'struct usb_cdc_ether_desc'
../drivers/net/usb/qmi_wwan.c:500:33: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/net/usb/qmi_wwan.c:501:33: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../include/linux/usb/cdc_ncm.h:88:36: error: field 'ncm_parm' has incomplete type
../include/linux/usb/cdc_ncm.h:83:72: error: 'USB_CDC_SUBCLASS_MBIM' undeclared (first use in this function)
../include/linux/usb/cdc_ncm.h:84:44: error: 'USB_CDC_PROTO_NONE' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:171:34: error: dereferencing pointer to incomplete type 'const struct usb_cdc_mbim_desc'
../drivers/net/usb/cdc_mbim.c:225:28: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:281:23: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:438:15: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/net/usb/cdc_mbim.c:439:19: error: 'USB_CDC_MBIM_NDP16_IPS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:446:19: error: 'USB_CDC_MBIM_NDP16_DSS_SIGN' undeclared (first use in this function)
../drivers/net/usb/cdc_mbim.c:459:37: error: increment of pointer to an incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:460:29: error: dereferencing pointer to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/net/usb/cdc_mbim.c:593:39: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:593:61: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/net/usb/cdc_mbim.c:597:58: error: 'USB_CDC_SUBCLASS_MBIM' undeclared here (not in a function)
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:60:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_acm.c:105:23: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:106:23: error: 'USB_CDC_ACM_PROTO_AT_V25TER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:133:15: error: variable 'acm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:134:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:134:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_acm.c:135:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:136:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:137:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_acm.c:141:1: error: variable 'acm_call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:142:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:142:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:143:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:144:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:145:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:149:15: error: variable 'acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:150:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:150:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_acm.c:151:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:152:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:153:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_acm.c:153:20: error: 'USB_CDC_CAP_LINE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:156:15: error: variable 'acm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_acm.c:157:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_acm.c:157:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:158:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_acm.c:159:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_acm.c:336:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:362:6: error: 'USB_CDC_REQ_SET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:363:26: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:374:6: error: 'USB_CDC_REQ_GET_LINE_CODING' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:379:12: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/f_acm.c:385:6: error: 'USB_CDC_REQ_SET_CONTROL_LINE_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:504:32: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:514:2: error: invalid use of undefined type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:550:32: error: 'USB_CDC_NOTIFY_SERIAL_STATE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_acm.c:643:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:651:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_acm.c:652:2: error: invalid use of undefined type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_acm.c:677:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_acm.c:133:35: error: storage size of 'acm_header_desc' isn't known
../drivers/usb/gadget/function/f_acm.c:141:1: error: storage size of 'acm_call_mgmt_descriptor' isn't known
../drivers/usb/gadget/function/f_acm.c:149:38: error: storage size of 'acm_descriptor' isn't known
../drivers/usb/gadget/function/f_acm.c:156:34: error: storage size of 'acm_union_desc' isn't known
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:119:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.c:1055:27: error: dereferencing pointer to incomplete type 'struct usb_cdc_line_coding'
../drivers/usb/gadget/function/u_serial.c:1103:29: error: storage size of 'coding' isn't known
../drivers/usb/gadget/function/u_serial.c:1110:23: error: 'USB_CDC_NO_PARITY' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.c:1111:21: error: 'USB_CDC_1_STOP_BITS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/f_obex.c:84:24: error: 'USB_CDC_SUBCLASS_OBEX' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:107:15: error: variable 'obex_cdc_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:108:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:108:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_obex.c:109:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:110:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:111:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_obex.c:114:15: error: variable 'obex_cdc_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:115:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:115:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:116:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:117:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:118:2: error: unknown field 'bMasterInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:119:2: error: unknown field 'bSlaveInterface0' specified in initializer
../drivers/usb/gadget/function/f_obex.c:122:15: error: variable 'obex_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_obex.c:123:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_obex.c:123:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_obex_desc'
../drivers/usb/gadget/function/f_obex.c:124:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_obex.c:125:24: error: 'USB_CDC_OBEX_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_obex.c:126:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_obex.c:341:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:350:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_obex.c:107:35: error: storage size of 'obex_cdc_header_desc' isn't known
../drivers/usb/gadget/function/f_obex.c:114:34: error: storage size of 'obex_cdc_union_desc' isn't known
../drivers/usb/gadget/function/f_obex.c:122:33: error: storage size of 'obex_desc' isn't known
../drivers/usb/gadget/function/u_ether.c:479:22: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:519:12: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.c:521:12: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:125:15: error: variable 'ntb_parameters' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:126:2: error: unknown field 'wLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:126:31: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:127:2: error: unknown field 'bmNtbFormatsSupported' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:122:28: error: 'USB_CDC_NCM_NTB16_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:123:6: error: 'USB_CDC_NCM_NTB32_SUPPORTED' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:128:2: error: unknown field 'dwNtbInMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:129:2: error: unknown field 'wNdpInDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:130:2: error: unknown field 'wNdpInPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:131:2: error: unknown field 'wNdpInAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:133:2: error: unknown field 'dwNtbOutMaxSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:134:2: error: unknown field 'wNdpOutDivisor' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:135:2: error: unknown field 'wNdpOutPayloadRemainder' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:136:2: error: unknown field 'wNdpOutAlignment' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:155:23: error: 'USB_CDC_SUBCLASS_NCM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:156:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:174:15: error: variable 'ncm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:175:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:175:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ncm.c:176:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:177:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:179:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:182:15: error: variable 'ncm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:183:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:183:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:184:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:185:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:190:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:191:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:191:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:192:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:193:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:197:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:198:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:199:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:200:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:205:15: error: variable 'ncm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ncm.c:206:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:206:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_desc'
../drivers/usb/gadget/function/f_ncm.c:207:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:208:24: error: 'USB_CDC_NCM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:210:2: error: unknown field 'bcdNcmVersion' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:212:2: error: unknown field 'bmNetworkCapabilities' specified in initializer
../drivers/usb/gadget/function/f_ncm.c:203:16: error: 'USB_CDC_NCM_NCAP_ETH_FILTER' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:203:46: error: 'USB_CDC_NCM_NCAP_CRC_MODE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:226:24: error: 'USB_CDC_NCM_PROTO_NTB' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:387:15: error: 'USB_CDC_NCM_NTH16_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:388:15: error: 'USB_CDC_NCM_NDP16_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:389:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth16'
../drivers/usb/gadget/function/f_ncm.c:390:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp16'
../drivers/usb/gadget/function/f_ncm.c:391:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe16'
../drivers/usb/gadget/function/f_ncm.c:403:15: error: 'USB_CDC_NCM_NTH32_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:404:15: error: 'USB_CDC_NCM_NDP32_NOCRC_SIGN' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ncm.c:405:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_nth32'
../drivers/usb/gadget/function/f_ncm.c:406:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ndp32'
../drivers/usb/gadget/function/f_ncm.c:407:22: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_dpe32'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:467:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:492:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:492:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:506:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:567:13: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ncm.c:598:16: error: 'USB_CDC_NCM_NTB_MIN_IN_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:599:6: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:629:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:656:5: error: 'USB_CDC_GET_NTB_PARAMETERS' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:660:29: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:661:11: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:667:5: error: 'USB_CDC_GET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:678:5: error: 'USB_CDC_SET_NTB_INPUT_SIZE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:691:5: error: 'USB_CDC_GET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:705:5: error: 'USB_CDC_SET_NTB_FORMAT' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:725:5: error: 'USB_CDC_GET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:739:5: error: 'USB_CDC_SET_CRC_MODE' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ncm.c:901:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:964:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:965:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:966:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1140:2: error: invalid use of undefined type 'struct usb_cdc_ncm_ntb_parameters'
../drivers/usb/gadget/function/f_ncm.c:1377:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ncm.c:1388:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:1397:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ncm.c:125:42: error: storage size of 'ntb_parameters' isn't known
../drivers/usb/gadget/function/f_ncm.c:174:35: error: storage size of 'ncm_header_desc' isn't known
../drivers/usb/gadget/function/f_ncm.c:182:34: error: storage size of 'ncm_union_desc' isn't known
../drivers/usb/gadget/function/f_ncm.c:190:34: error: storage size of 'ecm_desc' isn't known
../drivers/usb/gadget/function/f_ncm.c:205:32: error: storage size of 'ncm_desc' isn't known
../drivers/usb/gadget/function/f_ecm.c:111:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:112:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:130:15: error: variable 'ecm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:131:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:131:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_ecm.c:132:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:133:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:135:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:138:15: error: variable 'ecm_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:139:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:139:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:140:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:141:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:146:15: error: variable 'ecm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_ecm.c:147:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:147:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:148:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:149:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_ecm.c:153:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:154:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:155:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:156:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_ecm.c:396:8: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:396:30: error: 'USB_CDC_NOTIFY_NETWORK_CONNECTION' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:410:30: error: 'USB_CDC_NOTIFY_SPEED_CHANGE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:462:9: error: dereferencing pointer to incomplete type 'struct usb_cdc_notification'
../drivers/usb/gadget/function/f_ecm.c:484:6: error: 'USB_CDC_SET_ETHERNET_PACKET_FILTER' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:724:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_ecm.c:735:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_ecm.c:744:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_ecm.c:130:35: error: storage size of 'ecm_header_desc' isn't known
../drivers/usb/gadget/function/f_ecm.c:138:34: error: storage size of 'ecm_union_desc' isn't known
../drivers/usb/gadget/function/f_ecm.c:146:34: error: storage size of 'ecm_desc' isn't known
../drivers/usb/gadget/function/f_phonet.c:80:1: error: variable 'pn_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:81:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:81:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:82:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:83:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:84:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:88:1: error: variable 'pn_phonet_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:89:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:89:21: error: invalid application of 'sizeof' to incomplete type 'const struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_phonet.c:90:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:91:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:92:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:96:1: error: variable 'pn_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_phonet.c:97:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:97:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:98:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_phonet.c:99:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_phonet.c:518:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:525:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_phonet.c:80:1: error: storage size of 'pn_header_desc' isn't known
../drivers/usb/gadget/function/f_phonet.c:88:1: error: storage size of 'pn_phonet_desc' isn't known
../drivers/usb/gadget/function/f_phonet.c:96:1: error: storage size of 'pn_union_desc' isn't known
../drivers/usb/gadget/function/f_eem.c:53:24: error: 'USB_CDC_SUBCLASS_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_eem.c:54:24: error: 'USB_CDC_PROTO_EEM' undeclared here (not in a function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/f_subset.c:87:24: error: 'USB_CDC_SUBCLASS_MDLM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:92:15: error: variable 'mdlm_header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:93:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:93:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_subset.c:94:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:95:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:97:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_subset.c:100:15: error: variable 'mdlm_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:101:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:101:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_mdlm_desc'
../drivers/usb/gadget/function/f_subset.c:102:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:103:24: error: 'USB_CDC_MDLM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:105:2: error: unknown field 'bcdVersion' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:2: error: unknown field 'bGUID' specified in initializer
../drivers/usb/gadget/function/f_subset.c:106:11: error: extra brace group at end of initializer
../drivers/usb/gadget/function/f_subset.c:119:2: error: 'USB_CDC_MDLM_DETAIL_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:126:15: error: variable 'ether_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_subset.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_subset.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/f_subset.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_subset.c:129:24: error: 'USB_CDC_ETHERNET_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_subset.c:133:2: error: unknown field 'bmEthernetStatistics' specified in initializer
../drivers/usb/gadget/function/f_subset.c:134:2: error: unknown field 'wMaxSegmentSize' specified in initializer
../drivers/usb/gadget/function/f_subset.c:135:2: error: unknown field 'wNumberMCFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:136:2: error: unknown field 'bNumberPowerFilters' specified in initializer
../drivers/usb/gadget/function/f_subset.c:331:2: error: invalid use of undefined type 'struct usb_cdc_ether_desc'
../drivers/usb/gadget/function/u_ether.h:90:25: error: 'USB_CDC_PACKET_TYPE_BROADCAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:5: error: 'USB_CDC_PACKET_TYPE_ALL_MULTICAST' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:91:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:92:5: error: 'USB_CDC_PACKET_TYPE_PROMISCUOUS' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:92:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/u_ether.h:93:5: error: 'USB_CDC_PACKET_TYPE_DIRECTED' undeclared (first use in this function)
../drivers/usb/gadget/function/u_ether.h:93:4: error: invalid operands to binary | (have 'u8 * {aka unsigned char *}' and 'u8 * {aka unsigned char *}')
../drivers/usb/gadget/function/f_subset.c:92:35: error: storage size of 'mdlm_header_desc' isn't known
../drivers/usb/gadget/function/f_subset.c:100:33: error: storage size of 'mdlm_desc' isn't known
../drivers/usb/gadget/function/f_subset.c:126:34: error: storage size of 'ether_desc' isn't known
../drivers/usb/gadget/function/f_rndis.c:121:26: error: 'USB_CDC_SUBCLASS_ACM' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:122:26: error: 'USB_CDC_ACM_PROTO_VENDOR' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:126:15: error: variable 'header_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:127:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:127:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_header_desc'
../drivers/usb/gadget/function/f_rndis.c:128:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:129:24: error: 'USB_CDC_HEADER_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:131:2: error: unknown field 'bcdCDC' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:134:15: error: variable 'call_mgmt_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:135:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:135:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_call_mgmt_descriptor'
../drivers/usb/gadget/function/f_rndis.c:136:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:137:24: error: 'USB_CDC_CALL_MANAGEMENT_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:139:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:140:2: error: unknown field 'bDataInterface' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:143:15: error: variable 'rndis_acm_descriptor' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:144:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:144:21: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_acm_descriptor'
../drivers/usb/gadget/function/f_rndis.c:145:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:146:24: error: 'USB_CDC_ACM_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:148:2: error: unknown field 'bmCapabilities' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:151:15: error: variable 'rndis_union_desc' has initializer but incomplete type
../drivers/usb/gadget/function/f_rndis.c:152:2: error: unknown field 'bLength' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:152:20: error: invalid application of 'sizeof' to incomplete type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:153:2: error: unknown field 'bDescriptorType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:2: error: unknown field 'bDescriptorSubType' specified in initializer
../drivers/usb/gadget/function/f_rndis.c:154:24: error: 'USB_CDC_UNION_TYPE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:182:23: error: 'USB_CDC_SUBCLASS_ETHERNET' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:183:23: error: 'USB_CDC_PROTO_NONE' undeclared here (not in a function)
../drivers/usb/gadget/function/f_rndis.c:483:6: error: 'USB_CDC_SEND_ENCAPSULATED_COMMAND' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:494:6: error: 'USB_CDC_GET_ENCAPSULATED_RESPONSE' undeclared (first use in this function)
../drivers/usb/gadget/function/f_rndis.c:727:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:739:2: error: invalid use of undefined type 'struct usb_cdc_union_desc'
../drivers/usb/gadget/function/f_rndis.c:126:35: error: storage size of 'header_desc' isn't known
../drivers/usb/gadget/function/f_rndis.c:134:44: error: storage size of 'call_mgmt_descriptor' isn't known
../drivers/usb/gadget/function/f_rndis.c:143:38: error: storage size of 'rndis_acm_descriptor' isn't known
../drivers/usb/gadget/function/f_rndis.c:151:34: error: storage size of 'rndis_union_desc' isn't known
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../drivers/usb/gadget/function/u_serial.h:47:29: error: field 'port_line_coding' has incomplete type
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:52:61: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:57:15: error: unknown type name '__virtio16'
../drivers/net/macvtap.c:493:26: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:14: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:579:28: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:580:33: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:581:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:584:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:587:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:601:24: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:602:34: error: implicit declaration of function 'macvtap16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/macvtap.c:622:29: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../drivers/net/macvtap.c:631:25: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/macvtap.c:633:25: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/macvtap.c:635:25: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/macvtap.c:639:26: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/macvtap.c:641:24: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/macvtap.c:644:21: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:653:21: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/macvtap.c:670:9: error: variable 'vnet_hdr' has initializer but incomplete type
../drivers/net/macvtap.c:670:24: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:690:25: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/macvtap.c:811:25: error: storage size of 'vnet_hdr' isn't known
../drivers/net/macvtap.c:1077:23: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/vhost/net.c:64:14: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/vhost/net.c:531:9: error: variable 'hdr' has initializer but incomplete type
../drivers/vhost/net.c:532:3: error: unknown field 'flags' specified in initializer
../drivers/vhost/net.c:533:3: error: unknown field 'gso_type' specified in initializer
../drivers/vhost/net.c:533:15: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/vhost/net.c:531:24: error: storage size of 'hdr' isn't known
../drivers/vhost/net.c:1004:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/vhost/net.c:1005:11: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:36:15: error: implicit declaration of function '__virtio16_to_cpu' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:67:18: error: implicit declaration of function '__cpu_to_virtio16' [-Werror=implicit-function-declaration]
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:209:56: error: unknown type name '__virtio16'
../drivers/net/tun.c:214:15: error: unknown type name '__virtio16'
../drivers/net/tun.c:1041:9: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1041:24: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1068:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1069:7: error: implicit declaration of function 'tun16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/tun.c:1170:22: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1172:27: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1173:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1176:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1179:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1274:10: error: variable 'gso' has initializer but incomplete type
../drivers/net/tun.c:1274:25: error: storage size of 'gso' isn't known
../drivers/net/tun.c:1285:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/tun.c:1287:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/tun.c:1289:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/tun.c:1303:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/tun.c:1305:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/tun.c:1308:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/tun.c:1313:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/tun.c:1653:29: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/tun.c:2043:33: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:13:9: error: dereferencing pointer to incomplete type 'const struct virtio_net_hdr'
../include/linux/virtio_net.h:13:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:14:28: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:15:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:18:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:21:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:35:19: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:61:24: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr'
../include/linux/virtio_net.h:72:20: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../include/linux/virtio_net.h:74:20: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../include/linux/virtio_net.h:76:20: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../include/linux/virtio_net.h:80:21: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../include/linux/virtio_net.h:82:19: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../include/linux/virtio_net.h:85:16: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../include/linux/virtio_net.h:95:16: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:154:34: error: field 'hdr' has incomplete type
../drivers/net/virtio_net.c:269:27: error: dereferencing pointer to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:360:16: error: implicit declaration of function 'virtio16_to_cpu' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:480:23: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:486:30: error: 'VIRTIO_NET_HDR_F_DATA_VALID' undeclared (first use in this function)
../drivers/net/virtio_net.c:494:27: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:496:32: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:497:8: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:500:8: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:503:8: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:613:32: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:787:21: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:872:20: error: 'VIRTIO_NET_HDR_F_NEEDS_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:873:25: error: implicit declaration of function 'cpu_to_virtio16' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:887:24: error: 'VIRTIO_NET_HDR_GSO_TCPV4' undeclared (first use in this function)
../drivers/net/virtio_net.c:889:24: error: 'VIRTIO_NET_HDR_GSO_TCPV6' undeclared (first use in this function)
../drivers/net/virtio_net.c:891:24: error: 'VIRTIO_NET_HDR_GSO_UDP' undeclared (first use in this function)
../drivers/net/virtio_net.c:895:25: error: 'VIRTIO_NET_HDR_GSO_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:897:23: error: 'VIRTIO_NET_HDR_GSO_NONE' undeclared (first use in this function)
../drivers/net/virtio_net.c:987:29: error: storage size of 'ctrl' isn't known
../drivers/net/virtio_net.c:988:2: error: unknown type name 'virtio_net_ctrl_ack'
../drivers/net/virtio_net.c:992:10: error: implicit declaration of function 'virtio_has_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:992:39: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1011:20: error: 'VIRTIO_NET_OK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1035:31: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1037:33: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1038:8: error: 'VIRTIO_NET_CTRL_MAC_ADDR_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1043:38: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1044:32: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1049:4: error: implicit declaration of function 'virtio_cwrite8' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1050:28: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1111:32: error: 'VIRTIO_NET_CTRL_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1112:7: error: 'VIRTIO_NET_CTRL_ANNOUNCE_ACK' undeclared (first use in this function)
../drivers/net/virtio_net.c:1120:28: error: storage size of 's' isn't known
../drivers/net/virtio_net.c:1123:52: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1129:32: error: 'VIRTIO_NET_CTRL_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1130:7: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1171:36: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1179:32: error: 'VIRTIO_NET_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1180:7: error: 'VIRTIO_NET_CTRL_RX_PROMISC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1187:7: error: 'VIRTIO_NET_CTRL_RX_ALLMULTI' undeclared (first use in this function)
../drivers/net/virtio_net.c:1195:29: error: dereferencing pointer to incomplete type 'struct virtio_net_ctrl_mac'
../drivers/net/virtio_net.c:1203:22: error: implicit declaration of function 'cpu_to_virtio32' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1222:32: error: 'VIRTIO_NET_CTRL_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1223:7: error: 'VIRTIO_NET_CTRL_MAC_TABLE_SET' undeclared (first use in this function)
../drivers/net/virtio_net.c:1237:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1238:7: error: 'VIRTIO_NET_CTRL_VLAN_ADD' undeclared (first use in this function)
../drivers/net/virtio_net.c:1251:32: error: 'VIRTIO_NET_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1252:7: error: 'VIRTIO_NET_CTRL_VLAN_DEL' undeclared (first use in this function)
../drivers/net/virtio_net.c:1263:4: error: implicit declaration of function 'virtqueue_set_affinity' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1338:26: error: implicit declaration of function 'virtio_bus_name' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:6: error: implicit declaration of function 'virtio_cread_feature' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1431:37: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1432:6: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1435:10: error: 'VIRTIO_NET_S_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1441:7: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:1529:14: error: dereferencing pointer to incomplete type 'const struct virtio_config_ops'
../drivers/net/virtio_net.c:1536:2: error: unknown type name 'vq_callback_t'
../drivers/net/virtio_net.c:1547:36: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1583:36: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1709:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1710:29: error: 'VIRTIO_NET_F_CTRL_RX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1712:29: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1714:29: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared (first use in this function)
../drivers/net/virtio_net.c:1716:29: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1717:29: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared (first use in this function)
../drivers/net/virtio_net.c:1742:35: error: 'VIRTIO_NET_F_MQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1743:8: error: expected expression before 'struct'
../drivers/net/virtio_net.c:1747:31: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1748:24: error: 'VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX' undeclared (first use in this function)
../drivers/net/virtio_net.c:1749:32: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared (first use in this function)
../drivers/net/virtio_net.c:1766:31: error: 'VIRTIO_NET_F_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1772:32: error: 'VIRTIO_NET_F_GSO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1777:32: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1779:32: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1781:32: error: 'VIRTIO_NET_F_HOST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1783:32: error: 'VIRTIO_NET_F_HOST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1792:31: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared (first use in this function)
../drivers/net/virtio_net.c:1798:31: error: 'VIRTIO_NET_F_MAC' undeclared (first use in this function)
../drivers/net/virtio_net.c:1799:3: error: implicit declaration of function 'virtio_cread_bytes' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1800:24: error: invalid use of undefined type 'struct virtio_net_config'
../drivers/net/virtio_net.c:1825:31: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared (first use in this function)
../drivers/net/virtio_net.c:1826:31: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared (first use in this function)
../drivers/net/virtio_net.c:1827:31: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared (first use in this function)
../drivers/net/virtio_net.c:1828:31: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared (first use in this function)
../drivers/net/virtio_net.c:1831:31: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared (first use in this function)
../drivers/net/virtio_net.c:1835:31: error: 'VIRTIO_F_VERSION_1' undeclared (first use in this function)
../drivers/net/virtio_net.c:1836:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr_mrg_rxbuf'
../drivers/net/virtio_net.c:1838:24: error: invalid application of 'sizeof' to incomplete type 'struct virtio_net_hdr'
../drivers/net/virtio_net.c:1840:31: error: 'VIRTIO_F_ANY_LAYOUT' undeclared (first use in this function)
../drivers/net/virtio_net.c:1872:2: error: implicit declaration of function 'virtio_device_ready' [-Werror=implicit-function-declaration]
../drivers/net/virtio_net.c:1896:35: error: 'VIRTIO_NET_F_STATUS' undeclared (first use in this function)
../drivers/net/virtio_net.c:1900:16: error: 'VIRTIO_NET_S_LINK_UP' undeclared (first use in this function)
../drivers/net/virtio_net.c:2015:4: error: 'VIRTIO_ID_NET' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: 'VIRTIO_NET_F_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2020:21: error: 'VIRTIO_NET_F_GUEST_CSUM' undeclared here (not in a function)
../drivers/net/virtio_net.c:2020:21: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:2: error: 'VIRTIO_NET_F_GSO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2021:20: error: 'VIRTIO_NET_F_MAC' undeclared here (not in a function)
../drivers/net/virtio_net.c:2021:20: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:2: error: 'VIRTIO_NET_F_HOST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:26: error: 'VIRTIO_NET_F_HOST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2022:49: error: 'VIRTIO_NET_F_HOST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2022:49: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:2: error: 'VIRTIO_NET_F_HOST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:25: error: 'VIRTIO_NET_F_GUEST_TSO4' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:25: error: initializer element is not constant
../drivers/net/virtio_net.c:2023:50: error: 'VIRTIO_NET_F_GUEST_TSO6' undeclared here (not in a function)
../drivers/net/virtio_net.c:2023:50: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:2: error: 'VIRTIO_NET_F_GUEST_ECN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2024:26: error: 'VIRTIO_NET_F_GUEST_UFO' undeclared here (not in a function)
../drivers/net/virtio_net.c:2024:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:2: error: 'VIRTIO_NET_F_MRG_RXBUF' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:26: error: 'VIRTIO_NET_F_STATUS' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:26: error: initializer element is not constant
../drivers/net/virtio_net.c:2025:47: error: 'VIRTIO_NET_F_CTRL_VQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2025:47: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:2: error: 'VIRTIO_NET_F_CTRL_RX' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2026:24: error: 'VIRTIO_NET_F_CTRL_VLAN' undeclared here (not in a function)
../drivers/net/virtio_net.c:2026:24: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:2: error: 'VIRTIO_NET_F_GUEST_ANNOUNCE' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2027:31: error: 'VIRTIO_NET_F_MQ' undeclared here (not in a function)
../drivers/net/virtio_net.c:2027:31: error: initializer element is not constant
../drivers/net/virtio_net.c:2028:2: error: 'VIRTIO_NET_F_CTRL_MAC_ADDR' undeclared here (not in a function)
../drivers/net/virtio_net.c:2028:2: error: initializer element is not constant
../drivers/net/virtio_net.c:2029:2: error: 'VIRTIO_F_ANY_LAYOUT' undeclared here (not in a function)
../drivers/net/virtio_net.c:2029:2: error: initializer element is not constant
../drivers/usb/serial/visor.c:452:4: error: 'USB_CDC_SUBCLASS_ACM' undeclared (first use in this function)
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/virthba/virthba.c:622:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:623:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:630:19: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:673:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:674:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:681:22: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:838:15: error: 'struct uiscmdrsp_scsi' has no member named 'scsicmd'; did you mean 'scsistat'?
../drivers/staging/unisys/virthba/virthba.c:1037:3: error: implicit declaration of function 'SET_NO_DISK_INQUIRY_RESULT' [-Werror=implicit-function-declaration]
../drivers/staging/unisys/virthba/virthba.c:1098:27: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1099:52: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:1107:30: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1109:55: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:1142:21: error: 'struct uiscmdrsp_scsi' has no member named 'scsicmd'; did you mean 'scsistat'?
../drivers/staging/unisys/virthba/virthba.c:1149:39: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:1162:28: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'scsicmd'
../drivers/staging/unisys/virthba/virthba.c:1331:2: error: implicit declaration of function 'SPAR_CHANNEL_CLIENT_TRANSITION' [-Werror=implicit-function-declaration]
../drivers/staging/unisys/virthba/virthba.c:1380:29: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notify'
../drivers/staging/unisys/virthba/virthba.c:1381:32: error: 'struct uiscmdrsp_scsitaskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1386:29: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notifyresult'; did you mean 'notify_handle'?
../drivers/staging/unisys/virthba/virthba.c:1389:26: error: 'struct uiscmdrsp_vdiskmgmt' has no member named 'notify'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/virtpci/virtpci.c:896:2: error: implicit declaration of function 'SPAR_CHANNEL_CLIENT_TRANSITION' [-Werror=implicit-function-declaration]
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
../drivers/staging/unisys/include/iochannel.h:142:8: error: redefinition of 'struct phys_info'
Warnings:
../arch/x86/kernel/cpu/perf_event_intel_pt.c:197:1: warning: control reaches end of non-void function [-Wreturn-type]
../arch/x86/include/asm/msr.h:209:23: warning: right shift count >= width of type [-Wshift-count-overflow]
../arch/x86/xen/mmu.c:1105:57: warning: array subscript is above array bounds [-Warray-bounds]
../drivers/atm/iphase.c:1176:12: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/ata/pata_hpt366.c:376:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:379:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:382:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/block/hd.c:630:3: warning: switch condition has boolean value [-Wswitch-bool]
../sound/pci/oxygen/oxygen_mixer.c:91:43: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../net/caif/cfpkt_skbuff.c:282:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/hid/hid-input.c:1163:67: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/gpu/drm/gma500/cdv_intel_dp.c:869:2: warning: 'i2c_dp_aux_add_bus' is deprecated [-Wdeprecated-declarations]
../drivers/iommu/dmar.c:1849:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../drivers/iommu/intel-iommu.c:3800:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../net/netfilter/nf_conntrack_proto_sctp.c:180:22: warning: unused variable 'state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:310:33: warning: unused variable 'old_state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:310:22: warning: unused variable 'new_state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:415:22: warning: unused variable 'new_state' [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:104:17: warning: 'sctp_conntracks' defined but not used [-Wunused-variable]
../net/netfilter/nf_conntrack_proto_sctp.c:52:21: warning: 'sctp_timeouts' defined but not used [-Wunused-variable]
../include/linux/virtio_net.h:8:19: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../include/linux/virtio_net.h:58:15: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../net/packet/af_packet.c:2420:37: warning: excess elements in struct initializer
../net/packet/af_packet.c:2420:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../net/packet/af_packet.c:2959:38: warning: excess elements in struct initializer
../net/packet/af_packet.c:2959:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../drivers/mmc/host/sh_mmcif.c:401:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/mmc/host/sh_mmcif.c:402:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/media/platform/am437x/am437x-vpfe.c:1723:27: warning: self-comparison always evaluates to true [-Wtautological-compare]
../drivers/media/platform/s3c-camif/camif-capture.c:118:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/media/platform/s3c-camif/camif-capture.c:134:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/mtd/mtd_blkdevs.c:100:2: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/media/usb/cx231xx/cx231xx-cards.c:1110:1: warning: the frame size of 2064 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/net/ethernet/dec/tulip/uli526x.c:1086:4: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/scsi/be2iscsi/be_main.c:3168:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/scsi/bfa/bfa_ioc.c:3665:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/scsi/bfa/bfa_ioc.c:3673:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/scsi/megaraid/megaraid_sas_fusion.c:1723:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/net/usb/hso.c:1857:1: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/hso.c:1926:1: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/usb/class/cdc-acm.c:984:29: warning: unused variable 'newline' [-Wunused-variable]
../drivers/usb/class/cdc-acm.c:158:1: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/rndis_host.c:106:30: warning: unused variable 'notification' [-Wunused-variable]
../drivers/usb/class/cdc-wdm.c:238:25: warning: comparison between pointer and integer
../include/uapi/linux/byteorder/little_endian.h:35:42: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/little_endian.h:35:42: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/little_endian.h:35:42: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/uapi/linux/byteorder/little_endian.h:35:42: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../drivers/usb/class/cdc-wdm.c:264:27: warning: format '%d' expects argument of type 'int', but argument 3 has type 'const struct usb_device_id *' [-Wformat=]
../drivers/usb/class/cdc-wdm.c:405:16: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
../drivers/usb/class/cdc-wdm.c:824:22: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
../include/uapi/linux/byteorder/little_endian.h:35:42: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../drivers/staging/i2o/i2o_config.c:892:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/staging/i2o/i2o_config.c:952:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/net/usb/cdc_ncm.c:1478:15: warning: 'struct usb_cdc_speed_change' declared inside parameter list will not be visible outside of this definition or declaration
../drivers/net/usb/cdc_ncm.c:1513:9: warning: passing argument 2 of 'cdc_ncm_speed_change' from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/net/usb/cdc_ncm.c:291:36: warning: control reaches end of non-void function [-Wreturn-type]
../drivers/staging/iio/adc/ad7192.c:236:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/scsi/qla2xxx/qla_target.c:3086:6: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type 'uint32_t {aka unsigned int}' [-Wformat=]
../drivers/scsi/qla2xxx/qla_target.c:3083:17: warning: unused variable 'se_cmd' [-Wunused-variable]
../drivers/usb/gadget/function/f_acm.c:134:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:136:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:142:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:144:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:145:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:150:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:152:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:153:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:157:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_acm.c:159:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/u_serial.c:1103:29: warning: unused variable 'coding' [-Wunused-variable]
../drivers/usb/gadget/function/f_obex.c:108:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:110:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:115:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:117:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:118:23: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:119:22: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:123:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_obex.c:125:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/u_ether.c:480:1: warning: control reaches end of non-void function [-Wreturn-type]
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:175:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:177:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:183:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:185:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:191:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:193:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:200:25: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:206:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:208:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ncm.c:203:15: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:131:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:133:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:139:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:141:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:147:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:149:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_ecm.c:156:25: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:81:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:83:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:89:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:67:29: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:97:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_phonet.c:99:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:93:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:95:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:101:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:103:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:106:11: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:127:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:129:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:32:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:136:25: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_subset.c:331:2: warning: statement with no effect [-Wunused-value]
../drivers/usb/gadget/function/f_subset.c:504:24: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
../drivers/usb/gadget/function/f_rndis.c:127:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:129:24: warning: excess elements in struct initializer
../include/uapi/linux/byteorder/little_endian.h:34:26: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:135:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:137:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:139:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:140:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:144:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:146:24: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:148:20: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:152:14: warning: excess elements in struct initializer
../include/uapi/linux/usb/ch9.h:245:30: warning: excess elements in struct initializer
../drivers/usb/gadget/function/f_rndis.c:154:24: warning: excess elements in struct initializer
../drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not properly converted to the DMA API [-Wcpp]
../drivers/scsi/storvsc_drv.c:1676:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../include/linux/virtio_net.h:8:19: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../include/linux/virtio_net.h:58:15: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../drivers/net/macvtap.c:576:17: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../drivers/net/macvtap.c:620:16: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../drivers/net/macvtap.c:670:37: warning: excess elements in struct initializer
../drivers/net/macvtap.c:670:24: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../drivers/net/macvtap.c:811:25: warning: unused variable 'vnet_hdr' [-Wunused-variable]
../include/linux/virtio_net.h:8:19: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../include/linux/virtio_net.h:58:15: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../drivers/vhost/net.c:532:12: warning: excess elements in struct initializer
../drivers/vhost/net.c:533:15: warning: excess elements in struct initializer
../drivers/vhost/net.c:531:24: warning: unused variable 'hdr' [-Wunused-variable]
../drivers/usb/renesas_usbhs/common.c:492:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/linux/virtio_net.h:8:19: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../include/linux/virtio_net.h:58:15: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../drivers/net/tun.c:1041:32: warning: excess elements in struct initializer
../drivers/net/tun.c:1041:24: warning: unused variable 'gso' [-Wunused-variable]
../drivers/net/tun.c:1274:33: warning: excess elements in struct initializer
../drivers/net/tun.c:1274:25: warning: unused variable 'gso' [-Wunused-variable]
../include/linux/virtio_net.h:8:19: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../include/linux/virtio_net.h:58:15: warning: 'struct virtio_net_hdr' declared inside parameter list will not be visible outside of this definition or declaration
../drivers/net/virtio_net.c:987:29: warning: unused variable 'ctrl' [-Wunused-variable]
../drivers/net/virtio_net.c:1120:28: warning: unused variable 's' [-Wunused-variable]
../drivers/net/virtio_net.c:1338:26: warning: passing argument 2 of 'strlcpy' makes pointer from integer without a cast [-Wint-conversion]
../drivers/net/virtio_net.c:1568:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/net/virtio_net.c:1569:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/net/wireless/iwlegacy/3945.c:1022:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../drivers/staging/rtl8723au/core/rtw_wlan_util.c:525:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/unisys/visorutil/periodic_work.c:91:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
../drivers/staging/unisys/visorutil/periodic_work.c:122:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
-------------------------------------------------------------------------------
arm64-defconfig : FAIL, 4 errors, 0 warnings, 0 section mismatches
Errors:
../include/linux/thread_info.h:128:2: error: implicit declaration of function 'WARN_ON' [-Werror=implicit-function-declaration]
../arch/arm64/include/asm/arch_timer.h:113:2: error: implicit declaration of function 'BUG' [-Werror=implicit-function-declaration]
../include/linux/page-flags.h:410:2: error: implicit declaration of function 'BUG_ON' [-Werror=implicit-function-declaration]
../include/linux/kernfs.h:252:2: error: implicit declaration of function 'WARN_ON_ONCE' [-Werror=implicit-function-declaration]
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
This is a note to let you know that I've just added the patch titled
signal/arm: Document conflicts with SI_USER and SIGFPE
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Mon Apr 9 17:09:24 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Thu, 17 Aug 2017 17:07:46 -0500
Subject: signal/arm: Document conflicts with SI_USER and SIGFPE
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit 7771c66457004977b616bab785209f49d164f527 ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
that uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME, siginfo_layout will now return SIL_FAULT and the
appropriate fields will be reliably copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: Russell King <rmk(a)flint.arm.linux.org.uk>
Cc: linux-arm-kernel(a)lists.infradead.org
Ref: 451436b7bbb2 ("[ARM] Add support code for ARM hardware vector floating point")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/arm/include/uapi/asm/siginfo.h | 13 +++++++++++++
arch/arm/vfp/vfpmodule.c | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/include/uapi/asm/siginfo.h
--- /dev/null
+++ b/arch/arm/include/uapi/asm/siginfo.h
@@ -0,0 +1,13 @@
+#ifndef __ASM_SIGINFO_H
+#define __ASM_SIGINFO_H
+
+#include <asm-generic/siginfo.h>
+
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+#endif
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -257,7 +257,7 @@ static void vfp_raise_exceptions(u32 exc
if (exceptions == VFP_EXCEPTION_ERROR) {
vfp_panic("unhandled bounce", inst);
- vfp_raise_sigfpe(0, regs);
+ vfp_raise_sigfpe(FPE_FIXME, regs);
return;
}
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-4.9/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-4.9/pidns-disable-pid-allocation-if-pid_ns_prepare_proc-is-failed-in-alloc_pid.patch
queue-4.9/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-4.9/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
On Tue, Apr 10, 2018 at 12:00:26PM +0100, Chris Wilson wrote:
> Quoting Rodrigo Vivi (2018-04-09 20:14:32)
> > On Sat, Apr 07, 2018 at 10:05:25AM +0100, Chris Wilson wrote:
> > > Quoting Rodrigo Vivi (2018-04-06 23:18:16)
> > > > On Fri, Apr 06, 2018 at 11:12:27AM -0700, Souza, Jose wrote:
> > > > > On Thu, 2018-04-05 at 12:49 +0100, Chris Wilson wrote:
> > > > > > + struct drm_crtc *crtc =
> > > > > > + dp_to_dig_port(intel_dp)->base.base.crtc;
> > > >
> > > > I'm afraid that the issue is this pointer here. So this will only mask
> > > > the issue.
> > > >
> > > > Should we maybe stash the pipe? :/
> > >
> > > It's not that bad. pipe cannot change until after psr_disable is called,
> > > right? And psr_disable ensures that this worker is flushed. The current
> > > problem is just the coordination of cancelling the worker, where we may
> > > set psr.enabled to NULL right before the worker grabs it and
> > > dereferences it.
> > >
> > > So if we lock until we have the pipe, we know that dereference chain is
> > > valid, and we know that psr_disable() cannot complete until we complete
> > > the wait. So the pipe remains valid until we return (so long as the pipe
> > > exists when we start).
> >
> > hmm... it makes sense and I have no better suggestion actually.
> > So, as long it really fixes the regression we introduced:
> >
> > Acked-by: Rodrigo Vivi <rodrigo.vivi(a)intel.com>
>
> It does fix the abstract race, but I have no evidence of this being hit
> in practice. Pushed, but up to you if you care about this being
> backported.
>
> Note this race is different from the GPF CI reported. Hmm, I think
> https://bugs.freedesktop.org/show_bug.cgi?id=105959 is the same one as
> hit on the kasan run earlier.
Ouch, thanks for the clarification... I was really considering that this
was the case... but I should have noticed that there was no bugzilla
referenced here...
> -Chris
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx(a)lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 20.3359)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 12.9808)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 28.7865)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Failed to apply! Possible dependencies:
dbec4c9040ed ("scsi: mpt3sas: lockless command submission")
v4.14.33: Failed to apply! Possible dependencies:
dbec4c9040ed ("scsi: mpt3sas: lockless command submission")
v4.9.93: Failed to apply! Possible dependencies:
dbec4c9040ed ("scsi: mpt3sas: lockless command submission")
v4.4.127: Failed to apply! Possible dependencies:
dbec4c9040ed ("scsi: mpt3sas: lockless command submission")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Just in case 0day hasn't reported it yet.
drivers/clk/sunxi-ng/ccu-sun8i-de2.c:132:14: error: 'sun8i_h3_de2_clks' undeclared here
drivers/clk/sunxi-ng/ccu-sun8i-de2.c:135:14: error: 'sun8i_h3_de2_hw_clks' undeclared here
Seen in arm:allmodconfig, arm64:allmodconfig builds of v4.15.y.queue and v4.16.y.queue.
Guenter
Hi Greg
Here is a series that addresses microcode loading stability issues post
Spectre. All of them are simply cherry-picked and the patches themselves
have the upstream commit ID's.
I checked this for Intel platforms and thanks to Boris for checking
on AMD platforms.
I'm still working on a 4.9 backport, will send those once i get them to
work. stop_machine differences seem big enough that i might choose a
different approach for the 4.9 backport.
Cheers,
Ashok
Ashok Raj (4):
x86/microcode/intel: Check microcode revision before updating sibling
threads
x86/microcode/intel: Writeback and invalidate caches before updating
microcode
x86/microcode: Do not upload microcode if CPUs are offline
x86/microcode: Synchronize late microcode loading
Borislav Petkov (8):
x86/microcode: Propagate return value from updating functions
x86/CPU: Add a microcode loader callback
x86/CPU: Check CPU feature bits after microcode upgrade
x86/microcode: Get rid of struct apply_microcode_ctx
x86/microcode/intel: Look into the patch cache first
x86/microcode: Request microcode on the BSP
x86/microcode: Attempt late loading only when new microcode is present
x86/microcode: Fix CPU synchronization routine
arch/x86/include/asm/microcode.h | 10 +-
arch/x86/include/asm/processor.h | 1 +
arch/x86/kernel/cpu/common.c | 30 ++++++
arch/x86/kernel/cpu/microcode/amd.c | 44 +++++----
arch/x86/kernel/cpu/microcode/core.c | 181 ++++++++++++++++++++++++++--------
arch/x86/kernel/cpu/microcode/intel.c | 62 +++++++++---
6 files changed, 252 insertions(+), 76 deletions(-)
--
2.7.4
This is the start of the stable review cycle for the 4.4.124 release.
There are 97 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Sun Mar 25 09:41:34 UTC 2018.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.124-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.4.124-rc1
Leon Romanovsky <leonro(a)mellanox.com>
RDMA/ucma: Fix access to non-initialized CM_ID object
Vignesh R <vigneshr(a)ti.com>
dmaengine: ti-dma-crossbar: Fix event mapping for TPCC_EVT_MUX_60_63
Sergej Sawazki <sergej(a)taudac.com>
clk: si5351: Rename internal plls to avoid name collisions
Benjamin Coddington <bcodding(a)redhat.com>
nfsd4: permit layoutget of executable-only files
Anton Vasilyev <vasilyev(a)ispras.ru>
RDMA/ocrdma: Fix permissions for OCRDMA_RESET_STATS
Alexey Kodanev <alexey.kodanev(a)oracle.com>
ip6_vti: adjust vti mtu according to mtu of lower device
Jerry Snitselaar <jsnitsel(a)redhat.com>
iommu/vt-d: clean up pr_irq if request_threaded_irq fails
Florian Fainelli <f.fainelli(a)gmail.com>
pinctrl: Really force states during suspend/resume
Robert Walker <robert.walker(a)arm.com>
coresight: Fix disabling of CoreSight TPIU
Sahara <keun-o.park(a)darkmatter.ae>
pty: cancel pty slave port buf's work in tty_release
Peter Ujfalusi <peter.ujfalusi(a)ti.com>
drm/omap: DMM: Check for DMM readiness after successful transaction commit
Bjorn Helgaas <bhelgaas(a)google.com>
vgacon: Set VGA struct resource types
Artemy Kovalyov <artemyko(a)mellanox.com>
IB/umem: Fix use of npages/nmap fields
Parav Pandit <parav(a)mellanox.com>
RDMA/cma: Use correct size when writing netlink stats
Erez Shitrit <erezsh(a)mellanox.com>
IB/ipoib: Avoid memory leak if the SA returns a different DGID
Daniel Drake <drake(a)endlessm.com>
mmc: avoid removing non-removable hosts during suspend
Shawn Nematbakhsh <shawnn(a)chromium.org>
platform/chrome: Use proper protocol transfer function
Arnd Bergmann <arnd(a)arndb.de>
cros_ec: fix nul-termination for firmware build info
Ron Economos <w6rz(a)comcast.net>
media: [RESEND] media: dvb-frontends: Add delay to Si2168 restart
Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
media: bt8xx: Fix err 'bt878_probe()'
Tsang-Shian Lin <thlin(a)realtek.com>
rtlwifi: rtl_pci: Fix the bug when inactiveps is enabled.
Geert Uytterhoeven <geert(a)linux-m68k.org>
RDMA/iwpm: Fix uninitialized error code in iwpm_send_mapinfo()
Prakash Kamliya <pkamliya(a)codeaurora.org>
drm/msm: fix leak in failed get_pages
Gustavo A. R. Silva <garsilva(a)embeddedor.com>
media: c8sectpfe: fix potential NULL pointer dereference in c8sectpfe_timer_interrupt
Loic Poulain <loic.poulain(a)linaro.org>
Bluetooth: hci_qca: Avoid setup failure on missing rampatch
Kim Phillips <kim.phillips(a)arm.com>
perf tests kmod-path: Don't fail if compressed modules aren't supported
Moritz Fischer <mdf(a)kernel.org>
rtc: ds1374: wdt: Fix stop/start ioctl always returning -EINVAL
Moritz Fischer <mdf(a)kernel.org>
rtc: ds1374: wdt: Fix issue with timeout scaling from secs to wdt ticks
Dan Carpenter <dan.carpenter(a)oracle.com>
cifs: small underflow in cnvrtDosUnixTm()
Timmy Li <lixiaoping3(a)huawei.com>
net: hns: fix ethtool_get_strings overflow in hns driver
Alexey Khoroshilov <khoroshilov(a)ispras.ru>
sm501fb: don't return zero on failure path in sm501fb_start()
Maksim Salau <maksim.salau(a)gmail.com>
video: fbdev: udlfb: Fix buffer on stack
Dmitry Monakhov <dmonakhov(a)openvz.org>
tcm_fileio: Prevent information leak for short reads
Sergei Trofimovich <slyfox(a)gentoo.org>
ia64: fix module loading for gcc-5.4
Shaohua Li <shli(a)fb.com>
md/raid10: skip spare disk as 'first' disk
Sebastian Reichel <sebastian.reichel(a)collabora.co.uk>
Input: twl4030-pwrbutton - use correct device for irq request
Michael Trimarchi <michael(a)amarulasolutions.com>
power: supply: pda_power: move from timer to delayed_work
Scott Wood <swood(a)redhat.com>
bnx2x: Align RX buffers
Mario Kleiner <mario.kleiner.de(a)gmail.com>
drm/nouveau/kms: Increase max retries in scanout position queries.
Hans de Goede <hdegoede(a)redhat.com>
ACPI / PMIC: xpower: Fix power_table addresses
Robert Lippert <roblip(a)gmail.com>
ipmi/watchdog: fix wdog hang on panic waiting for ipmi response
Kishon Vijay Abraham I <kishon(a)ti.com>
ARM: DRA7: clockdomain: Change the CLKTRCTRL of CM_PCIE_CLKSTCTRL to SW_WKUP
yangbo lu <yangbo.lu(a)nxp.com>
mmc: sdhci-of-esdhc: limit SD clock for ls1012a/ls1046a
Pan Bian <bianpan2016(a)163.com>
staging: wilc1000: fix unchecked return value
Sameer Wadgaonkar <sameer.wadgaonkar(a)unisys.com>
staging: unisys: visorhba: fix s-Par to boot with option CONFIG_VMAP_STACK set to y
Ming Lei <ming.lei(a)redhat.com>
mtip32xx: use runtime tag to initialize command header
Keerthy <j-keerthy(a)ti.com>
mfd: palmas: Reset the POWERHOLD mux during power off
Emmanuel Grumbach <emmanuel.grumbach(a)intel.com>
mac80211: don't parse encrypted management frames in ieee80211_frame_acked
Filipe Manana <fdmanana(a)suse.com>
Btrfs: send, fix file hole not being preserved due to inline extent
Pan Bian <bianpan2016(a)163.com>
rndis_wlan: add return value validation
Pan Bian <bianpan2016(a)163.com>
mt7601u: check return value of alloc_skb
Shrirang Bagul <shrirang.bagul(a)canonical.com>
iio: st_pressure: st_accel: Initialise sensor platform data properly
NeilBrown <neilb(a)suse.com>
NFS: don't try to cross a mountpount when there isn't one there.
Vlad Tsyrklevich <vlad(a)tsyrklevich.net>
infiniband/uverbs: Fix integer overflows
Finn Thain <fthain(a)telegraphics.com.au>
scsi: mac_esp: Replace bogus memory barrier with spinlock
Pan Bian <bianpan2016(a)163.com>
qlcnic: fix unchecked return value
Pan Bian <bianpan2016(a)163.com>
wan: pc300too: abort path on failure
Dan Carpenter <dan.carpenter(a)oracle.com>
mmc: host: omap_hsmmc: checking for NULL instead of IS_ERR()
Jarno Rajahalme <jarno(a)ovn.org>
openvswitch: Delete conntrack entry clashing with an expectation.
Gao Feng <fgao(a)ikuai8.com>
netfilter: xt_CT: fix refcnt leak on error path
James Smart <jsmart2021(a)gmail.com>
Fix driver usage of 128B WQEs when WQ_CREATE is V1.
Dan Carpenter <dan.carpenter(a)oracle.com>
ASoC: Intel: Skylake: Uninitialized variable in probe_codec()
Maor Gottlieb <maorg(a)mellanox.com>
IB/mlx4: Change vma from shared to private
Maor Gottlieb <maorg(a)mellanox.com>
IB/mlx4: Take write semaphore when changing the vma struct
Dan Carpenter <dan.carpenter(a)oracle.com>
HSI: ssi_protocol: double free in ssip_pn_xmit()
Feras Daoud <ferasda(a)mellanox.com>
IB/ipoib: Update broadcast object if PKey value was changed in index 0
Feras Daoud <ferasda(a)mellanox.com>
IB/ipoib: Fix deadlock between ipoib_stop and mcast join flow
Mikhail Paulyshka <me(a)mixaill.tk>
ALSA: hda - Fix headset microphone detection for ASUS N551 and N751
Bernd Faust <berndfaust(a)gmail.com>
e1000e: fix timing for 82579 Gigabit Ethernet controller
Eric Dumazet <edumazet(a)google.com>
tcp: remove poll() flakes with FastOpen
Benjamin Coddington <bcodding(a)redhat.com>
NFS: Fix missing pg_cleanup after nfs_pageio_cond_complete()
Guoqing Jiang <gqjiang(a)suse.com>
md/raid10: wait up frozen array in handle_write_completed
Suman Anna <s-anna(a)ti.com>
iommu/omap: Register driver before setting IOMMU ops
Abel Vesa <abelvesa(a)linux.com>
ARM: 8668/1: ftrace: Fix dynamic ftrace with DEBUG_RODATA and !FRAME_POINTER
Alexey Kardashevskiy <aik(a)ozlabs.ru>
KVM: PPC: Book3S PR: Exit KVM on failed mapping
David Gibson <david(a)gibson.dropbear.id.au>
scsi: virtio_scsi: Always try to read VPD pages
Bharat Kumar Reddy Gooty <bharat.gooty(a)broadcom.com>
clk: ns2: Correct SDIO bits
Mohammed Shafi Shajakhan <mohammed(a)qti.qualcomm.com>
ath: Fix updating radar flags for coutry code India
Marek Vasut <marex(a)denx.de>
spi: dw: Disable clock after unregistering the host
Jasmin J <jasmin(a)anw.at>
media/dvb-core: Race condition when writing to CAM
David Ahern <dsa(a)cumulusnetworks.com>
net: ipv6: send unsolicited NA on admin up
Edgar Cherkasov <echerkasov(a)dev.rtsoft.ru>
i2c: i2c-scmi: add a MS HID
Hans de Goede <hdegoede(a)redhat.com>
genirq: Use irqd_get_trigger_type to compare the trigger type for shared IRQs
Thomas Gleixner <tglx(a)linutronix.de>
cpufreq/sh: Replace racy task affinity logic
Thomas Gleixner <tglx(a)linutronix.de>
ACPI/processor: Replace racy task affinity logic
Thomas Gleixner <tglx(a)linutronix.de>
ACPI/processor: Fix error handling in __acpi_processor_start()
Deepa Dinamani <deepa.kernel(a)gmail.com>
time: Change posix clocks ops interfaces to use timespec64
Dmitry Torokhov <dmitry.torokhov(a)gmail.com>
Input: ar1021_i2c - fix too long name in driver's device table
Hans de Goede <hdegoede(a)redhat.com>
rtc: cmos: Do not assume irq 8 for rtc when there are no legacy irqs
Hans de Goede <hdegoede(a)redhat.com>
x86: i8259: export legacy_pic symbol
Dong Aisheng <aisheng.dong(a)nxp.com>
regulator: anatop: set default voltage selector for pcie
Santeri Toivonen <santeri.toivonen(a)vatsul.com>
platform/x86: asus-nb-wmi: Add wapf4 quirk for the X302UA
Yisheng Xie <xieyisheng1(a)huawei.com>
staging: android: ashmem: Fix possible deadlock in ashmem_ioctl
Pavel Shilovsky <pshilov(a)microsoft.com>
CIFS: Enable encryption during session setup phase
Steve French <smfrench(a)gmail.com>
SMB3: Validate negotiate request must always be signed
Jeremy Boone <jeremy.boone(a)nccgroup.trust>
tpm_tis: fix potential buffer overruns caused by bit glitches on the bus
Jeremy Boone <jeremy.boone(a)nccgroup.trust>
tpm: fix potential buffer overruns caused by bit glitches on the bus
-------------
Diffstat:
Makefile | 4 +-
arch/alpha/kernel/console.c | 1 +
arch/arm/kernel/ftrace.c | 11 ++--
arch/arm/mach-omap2/clockdomains7xx_data.c | 2 +-
arch/ia64/kernel/module.c | 4 +-
arch/powerpc/kvm/book3s_64_mmu_host.c | 5 +-
arch/powerpc/kvm/book3s_pr.c | 6 ++-
arch/x86/kernel/i8259.c | 1 +
drivers/acpi/pmic/intel_pmic_xpower.c | 50 ++++++++---------
drivers/acpi/processor_driver.c | 10 +++-
drivers/acpi/processor_throttling.c | 62 +++++++++++++---------
drivers/block/mtip32xx/mtip32xx.c | 36 ++++++++-----
drivers/bluetooth/hci_qca.c | 3 ++
drivers/char/ipmi/ipmi_watchdog.c | 8 +--
drivers/char/tpm/tpm-interface.c | 5 ++
drivers/char/tpm/tpm2-cmd.c | 6 +++
drivers/char/tpm/tpm_tis.c | 5 +-
drivers/clk/bcm/clk-ns2.c | 2 +-
drivers/clk/clk-si5351.c | 2 +-
drivers/cpufreq/sh-cpufreq.c | 45 +++++++++-------
drivers/dma/ti-dma-crossbar.c | 10 +++-
drivers/gpu/drm/msm/msm_gem.c | 14 +++--
drivers/gpu/drm/nouveau/nouveau_display.c | 2 +-
drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 5 ++
drivers/hsi/clients/ssi_protocol.c | 5 +-
drivers/hwtracing/coresight/coresight-tpiu.c | 13 +++--
drivers/i2c/busses/i2c-scmi.c | 4 ++
drivers/iio/accel/st_accel_core.c | 7 +--
drivers/iio/pressure/st_pressure_core.c | 8 +--
drivers/infiniband/core/cma.c | 5 +-
drivers/infiniband/core/iwpm_util.c | 1 +
drivers/infiniband/core/umem.c | 2 +-
drivers/infiniband/core/uverbs_cmd.c | 13 ++++-
drivers/infiniband/hw/mlx4/main.c | 6 ++-
drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 2 +-
drivers/infiniband/ulp/ipoib/ipoib_ib.c | 13 +++++
drivers/infiniband/ulp/ipoib/ipoib_main.c | 16 ++++++
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 11 ++--
drivers/input/misc/twl4030-pwrbutton.c | 2 +-
drivers/input/touchscreen/ar1021_i2c.c | 2 +-
drivers/iommu/intel-svm.c | 9 ++--
drivers/iommu/omap-iommu.c | 21 ++++++--
drivers/md/raid10.c | 6 +++
drivers/media/dvb-core/dvb_ca_en50221.c | 23 ++++++++
drivers/media/dvb-frontends/si2168.c | 3 ++
drivers/media/pci/bt8xx/bt878.c | 3 +-
.../media/platform/sti/c8sectpfe/c8sectpfe-core.c | 4 +-
drivers/mfd/palmas.c | 14 +++++
drivers/mmc/core/core.c | 8 +++
drivers/mmc/host/omap_hsmmc.c | 4 +-
drivers/mmc/host/sdhci-of-esdhc.c | 14 +++++
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 1 +
drivers/net/ethernet/hisilicon/hns/hns_dsaf_gmac.c | 2 +-
drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c | 2 +-
drivers/net/ethernet/hisilicon/hns/hns_dsaf_rcb.c | 2 +-
.../net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c | 2 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 6 +++
.../ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 2 +
drivers/net/wan/pc300too.c | 1 +
drivers/net/wireless/ath/regd.c | 19 ++++---
drivers/net/wireless/mediatek/mt7601u/mcu.c | 10 +++-
drivers/net/wireless/realtek/rtlwifi/pci.c | 7 +++
drivers/net/wireless/rndis_wlan.c | 4 ++
drivers/pinctrl/core.c | 24 ++++++---
drivers/platform/chrome/cros_ec_proto.c | 8 +--
drivers/platform/chrome/cros_ec_sysfs.c | 2 +-
drivers/platform/x86/asus-nb-wmi.c | 9 ++++
drivers/power/pda_power.c | 49 +++++++++--------
drivers/ptp/ptp_clock.c | 18 +++----
drivers/regulator/anatop-regulator.c | 5 ++
drivers/rtc/rtc-cmos.c | 17 ++++--
drivers/rtc/rtc-ds1374.c | 10 +++-
drivers/scsi/lpfc/lpfc_sli.c | 3 ++
drivers/scsi/mac_esp.c | 33 ++++++++----
drivers/scsi/virtio_scsi.c | 24 +++++++++
drivers/spi/spi-dw-mmio.c | 2 +-
drivers/staging/android/ashmem.c | 8 ++-
drivers/staging/unisys/visorhba/visorhba_main.c | 8 ++-
drivers/staging/wilc1000/linux_mon.c | 2 +
drivers/target/target_core_file.c | 23 +++++---
drivers/tty/tty_io.c | 2 +
drivers/video/console/vgacon.c | 34 +++++++++---
drivers/video/fbdev/sm501fb.c | 1 +
drivers/video/fbdev/udlfb.c | 14 ++++-
fs/btrfs/send.c | 23 +++++++-
fs/cifs/netmisc.c | 6 +--
fs/cifs/sess.c | 22 ++++----
fs/cifs/smb2pdu.c | 11 ++--
fs/nfs/pagelist.c | 6 ++-
fs/nfsd/nfs4proc.c | 6 +--
fs/nfsd/vfs.c | 24 +++++++--
include/linux/posix-clock.h | 10 ++--
kernel/irq/manage.c | 4 +-
kernel/time/posix-clock.c | 34 ++++++++----
net/ipv4/tcp_input.c | 16 +++---
net/ipv6/ip6_vti.c | 20 +++++++
net/ipv6/ndisc.c | 2 +
net/mac80211/status.c | 1 +
net/netfilter/xt_CT.c | 11 +++-
net/openvswitch/conntrack.c | 30 ++++++++++-
sound/pci/hda/patch_realtek.c | 12 ++++-
sound/soc/intel/skylake/skl.c | 2 +-
tools/perf/tests/kmod-path.c | 2 +
103 files changed, 811 insertions(+), 303 deletions(-)
This is a note to let you know that I've just added the patch titled
signal/arm: Document conflicts with SI_USER and SIGFPE
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Mon Apr 9 13:58:16 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Thu, 17 Aug 2017 17:07:46 -0500
Subject: signal/arm: Document conflicts with SI_USER and SIGFPE
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit 7771c66457004977b616bab785209f49d164f527 ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
that uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME, siginfo_layout will now return SIL_FAULT and the
appropriate fields will be reliably copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: Russell King <rmk(a)flint.arm.linux.org.uk>
Cc: linux-arm-kernel(a)lists.infradead.org
Ref: 451436b7bbb2 ("[ARM] Add support code for ARM hardware vector floating point")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/arm/include/uapi/asm/siginfo.h | 13 +++++++++++++
arch/arm/vfp/vfpmodule.c | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/include/uapi/asm/siginfo.h
--- /dev/null
+++ b/arch/arm/include/uapi/asm/siginfo.h
@@ -0,0 +1,13 @@
+#ifndef __ASM_SIGINFO_H
+#define __ASM_SIGINFO_H
+
+#include <asm-generic/siginfo.h>
+
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+#endif
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -257,7 +257,7 @@ static void vfp_raise_exceptions(u32 exc
if (exceptions == VFP_EXCEPTION_ERROR) {
vfp_panic("unhandled bounce", inst);
- vfp_raise_sigfpe(0, regs);
+ vfp_raise_sigfpe(FPE_FIXME, regs);
return;
}
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-4.14/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-4.14/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-4.14/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
The description of commit e39a97353e53 is wrong: it mentions that
commit 2a842acab109 introduced a bug in __scsi_error_from_host_byte()
although that commit did not change the behavior of that function.
Additionally, commit e39a97353e53 introduced a bug: it causes commands
that fail with hostbyte=DID_OK and driverbyte=DRIVER_SENSE to be
completed with BLK_STS_OK. Hence revert that commit.
Fixes: e39a97353e53 ("scsi: core: return BLK_STS_OK for DID_OK in __scsi_error_from_host_byte()")
Reported-by: Damien Le Moal <damien.lemoal(a)wdc.com>
Signed-off-by: Bart Van Assche <bart.vanassche(a)wdc.com>
Cc: Hannes Reinecke <hare(a)suse.com>
Cc: Douglas Gilbert <dgilbert(a)interlog.com>
Cc: Damien Le Moal <damien.lemoal(a)wdc.com>
Cc: Christoph Hellwig <hch(a)lst.de>
Cc: Lee Duncan <lduncan(a)suse.com>
Cc: stable(a)vger.kernel.org
---
drivers/scsi/scsi_lib.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 1d83f29aee74..c0e4ae733cce 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -733,8 +733,6 @@ static blk_status_t __scsi_error_from_host_byte(struct scsi_cmnd *cmd,
int result)
{
switch (host_byte(result)) {
- case DID_OK:
- return BLK_STS_OK;
case DID_TRANSPORT_FAILFAST:
return BLK_STS_TRANSPORT;
case DID_TARGET_FAILURE:
--
2.16.2
This is a note to let you know that I've just added the patch titled
signal/arm: Document conflicts with SI_USER and SIGFPE
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Mon Apr 9 10:16:32 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Thu, 17 Aug 2017 17:07:46 -0500
Subject: signal/arm: Document conflicts with SI_USER and SIGFPE
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit 7771c66457004977b616bab785209f49d164f527 ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
that uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME, siginfo_layout will now return SIL_FAULT and the
appropriate fields will be reliably copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: Russell King <rmk(a)flint.arm.linux.org.uk>
Cc: linux-arm-kernel(a)lists.infradead.org
Ref: 451436b7bbb2 ("[ARM] Add support code for ARM hardware vector floating point")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/arm/include/uapi/asm/siginfo.h | 13 +++++++++++++
arch/arm/vfp/vfpmodule.c | 2 +-
2 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/include/uapi/asm/siginfo.h
--- /dev/null
+++ b/arch/arm/include/uapi/asm/siginfo.h
@@ -0,0 +1,13 @@
+#ifndef __ASM_SIGINFO_H
+#define __ASM_SIGINFO_H
+
+#include <asm-generic/siginfo.h>
+
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+#endif
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -257,7 +257,7 @@ static void vfp_raise_exceptions(u32 exc
if (exceptions == VFP_EXCEPTION_ERROR) {
vfp_panic("unhandled bounce", inst);
- vfp_raise_sigfpe(0, regs);
+ vfp_raise_sigfpe(FPE_FIXME, regs);
return;
}
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-4.15/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-4.15/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-4.15/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
This is a note to let you know that I've just added the patch titled
signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Mon Apr 9 10:16:32 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Sat, 19 Aug 2017 15:26:01 -0500
Subject: signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit cf4674c46c66e45f238f8f7e81af2a444b970c0a ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
that uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME and TRAP_FIXME, siginfo_layout() will now return
SIL_FAULT and the appropriate fields will be reliably copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: Paul Mackerras <paulus(a)samba.org>
Cc: Kumar Gala <kumar.gala(a)freescale.com>
Cc: Michael Ellerman <mpe(a)ellerman.id.au>
Cc: Benjamin Herrenschmidt <benh(a)kernel.crashing.org>
Cc: linuxppc-dev(a)lists.ozlabs.org
Ref: 9bad068c24d7 ("[PATCH] ppc32: support for e500 and 85xx")
Ref: 0ed70f6105ef ("PPC32: Provide proper siginfo information on various exceptions.")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/powerpc/include/uapi/asm/siginfo.h | 15 +++++++++++++++
arch/powerpc/kernel/traps.c | 10 +++++-----
2 files changed, 20 insertions(+), 5 deletions(-)
--- a/arch/powerpc/include/uapi/asm/siginfo.h
+++ b/arch/powerpc/include/uapi/asm/siginfo.h
@@ -18,4 +18,19 @@
#undef NSIGTRAP
#define NSIGTRAP 4
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+/*
+ * SIGTRAP si_codes
+ */
+#ifdef __KERNEL__
+#define TRAP_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+
#endif /* _ASM_POWERPC_SIGINFO_H */
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -917,7 +917,7 @@ void unknown_exception(struct pt_regs *r
printk("Bad trap at PC: %lx, SR: %lx, vector=%lx\n",
regs->nip, regs->msr, regs->trap);
- _exception(SIGTRAP, regs, 0, 0);
+ _exception(SIGTRAP, regs, TRAP_FIXME, 0);
exception_exit(prev_state);
}
@@ -939,7 +939,7 @@ bail:
void RunModeException(struct pt_regs *regs)
{
- _exception(SIGTRAP, regs, 0, 0);
+ _exception(SIGTRAP, regs, TRAP_FIXME, 0);
}
void single_step_exception(struct pt_regs *regs)
@@ -978,7 +978,7 @@ static void emulate_single_step(struct p
static inline int __parse_fpscr(unsigned long fpscr)
{
- int ret = 0;
+ int ret = FPE_FIXME;
/* Invalid operation */
if ((fpscr & FPSCR_VE) && (fpscr & FPSCR_VX))
@@ -1929,7 +1929,7 @@ void SPEFloatingPointException(struct pt
extern int do_spe_mathemu(struct pt_regs *regs);
unsigned long spefscr;
int fpexc_mode;
- int code = 0;
+ int code = FPE_FIXME;
int err;
flush_spe_to_thread(current);
@@ -1998,7 +1998,7 @@ void SPEFloatingPointRoundException(stru
printk(KERN_ERR "unrecognized spe instruction "
"in %s at %lx\n", current->comm, regs->nip);
} else {
- _exception(SIGFPE, regs, 0, regs->nip);
+ _exception(SIGFPE, regs, FPE_FIXME, regs->nip);
return;
}
}
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-4.15/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-4.15/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-4.15/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
The HP EliteBook G3 850 has a weird bug where a subsequent cold boot
hangs while plugged in if Linux enables the Host Notify features of
i2c-i801. The cold boot hang depends on how the system boots. It does
not hang on UEFI Grub text boot or legacy Grub text boot. But it does
hang on legacy Grub graphical boot and Intel Boot Agent PXE text boot.
Booting unplugged is not affected.
Disabling the Host Notify feature with disable_feature=0x20 works around
the bug, so automatically do so based on DMI information.
More information can be found here:
https://www.spinics.net/lists/linux-i2c/msg33938.html
Signed-off-by: Jason Andryuk <jandryuk(a)gmail.com>
Reviewed-by: Jean Delvare <jdelvare(a)suse.de>
Cc: stable(a)vger.kernel.org
---
v3: Switch to DMI_EXACT_MATCH and add empty element to array
drivers/i2c/busses/i2c-i801.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index 692b34125866..11149ddae745 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -1042,6 +1042,27 @@ static const struct pci_device_id i801_ids[] = {
MODULE_DEVICE_TABLE(pci, i801_ids);
#if defined CONFIG_X86 && defined CONFIG_DMI
+static const struct dmi_system_id host_notify_dmi_blacklist[] = {
+ {
+ .ident = "HP EliteBook G3 850",
+ .matches = {
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "HP"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME,
+ "HP EliteBook 850 G3"),
+ },
+ },
+ {}
+};
+
+static void blacklist_features(struct i801_priv *priv)
+{
+ if (dmi_check_system(host_notify_dmi_blacklist)) {
+ dev_warn(&priv->pci_dev->dev,
+ "SMBus Host Notify disabled on this system");
+ priv->features &= ~FEATURE_HOST_NOTIFY;
+ }
+}
+
static unsigned char apanel_addr;
/* Scan the system ROM for the signature "FJKEYINF" */
@@ -1159,6 +1180,7 @@ static void i801_probe_optional_slaves(struct i801_priv *priv)
#else
static void __init input_apanel_init(void) {}
static void i801_probe_optional_slaves(struct i801_priv *priv) {}
+static void blacklist_features(struct i801_priv *priv) {}
#endif /* CONFIG_X86 && CONFIG_DMI */
#if IS_ENABLED(CONFIG_I2C_MUX_GPIO) && defined CONFIG_DMI
@@ -1562,6 +1584,7 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
i801_feature_names[i]);
}
priv->features &= ~disable_features;
+ blacklist_features(priv);
err = pcim_enable_device(dev);
if (err) {
--
2.14.3
This is a note to let you know that I've just added the patch titled
sparc64: Oracle DAX driver depends on SPARC64
to the 4.16-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sparc64-oracle-dax-driver-depends-on-sparc64.patch
and it can be found in the queue-4.16 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 9c548bb5823dfcf7a16c6e65976d84d9581208c9 Mon Sep 17 00:00:00 2001
From: Guenter Roeck <linux(a)roeck-us.net>
Date: Mon, 26 Feb 2018 15:21:18 -0800
Subject: sparc64: Oracle DAX driver depends on SPARC64
From: Guenter Roeck <linux(a)roeck-us.net>
commit 9c548bb5823dfcf7a16c6e65976d84d9581208c9 upstream.
sparc:allmodconfig fails to build as follows.
ERROR: "mdesc_release" [drivers/sbus/char/oradax.ko] undefined!
ERROR: "sun4v_hvapi_register" [drivers/sbus/char/oradax.ko] undefined!
ERROR: "mdesc_get_property" [drivers/sbus/char/oradax.ko] undefined!
ERROR: "mdesc_node_by_name" [drivers/sbus/char/oradax.ko] undefined!
ERROR: "mdesc_grab" [drivers/sbus/char/oradax.ko] undefined!
ERROR: "sun4v_ccb_info" [drivers/sbus/char/oradax.ko] undefined!
ERROR: "sun4v_ccb_submit" [drivers/sbus/char/oradax.ko] undefined!
ERROR: "sun4v_ccb_kill" [drivers/sbus/char/oradax.ko] undefined!
The symbols are only available with SPARC64 builds, thus the driver
depends on it.
Fixes: dd0273284c74 ("sparc64: Oracle DAX driver")
Cc: Kees Cook <keescook(a)chromium.org>
Signed-off-by: Guenter Roeck <linux(a)roeck-us.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/sbus/char/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/sbus/char/Kconfig
+++ b/drivers/sbus/char/Kconfig
@@ -72,7 +72,8 @@ config DISPLAY7SEG
config ORACLE_DAX
tristate "Oracle Data Analytics Accelerator"
- default m if SPARC64
+ depends on SPARC64
+ default m
help
Driver for Oracle Data Analytics Accelerator, which is
a coprocessor that performs database operations in hardware.
Patches currently in stable-queue which might be from linux(a)roeck-us.net are
queue-4.16/sparc64-oracle-dax-driver-depends-on-sparc64.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Synchronize late microcode loading
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-synchronize-late-microcode-loading.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From a5321aec6412b20b5ad15db2d6b916c05349dbff Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:46 +0100
Subject: x86/microcode: Synchronize late microcode loading
From: Ashok Raj <ashok.raj(a)intel.com>
commit a5321aec6412b20b5ad15db2d6b916c05349dbff upstream.
Original idea by Ashok, completely rewritten by Borislav.
Before you read any further: the early loading method is still the
preferred one and you should always do that. The following patch is
improving the late loading mechanism for long running jobs and cloud use
cases.
Gather all cores and serialize the microcode update on them by doing it
one-by-one to make the late update process as reliable as possible and
avoid potential issues caused by the microcode update.
[ Borislav: Rewrite completely. ]
Co-developed-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-8-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 118 +++++++++++++++++++++++++++--------
1 file changed, 92 insertions(+), 26 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -22,13 +22,16 @@
#define pr_fmt(fmt) "microcode: " fmt
#include <linux/platform_device.h>
+#include <linux/stop_machine.h>
#include <linux/syscore_ops.h>
#include <linux/miscdevice.h>
#include <linux/capability.h>
#include <linux/firmware.h>
#include <linux/kernel.h>
+#include <linux/delay.h>
#include <linux/mutex.h>
#include <linux/cpu.h>
+#include <linux/nmi.h>
#include <linux/fs.h>
#include <linux/mm.h>
@@ -64,6 +67,11 @@ LIST_HEAD(microcode_cache);
*/
static DEFINE_MUTEX(microcode_mutex);
+/*
+ * Serialize late loading so that CPUs get updated one-by-one.
+ */
+static DEFINE_SPINLOCK(update_lock);
+
struct ucode_cpu_info ucode_cpu_info[NR_CPUS];
struct cpu_info_ctx {
@@ -486,6 +494,19 @@ static void __exit microcode_dev_exit(vo
/* fake device for request_firmware */
static struct platform_device *microcode_pdev;
+/*
+ * Late loading dance. Why the heavy-handed stomp_machine effort?
+ *
+ * - HT siblings must be idle and not execute other code while the other sibling
+ * is loading microcode in order to avoid any negative interactions caused by
+ * the loading.
+ *
+ * - In addition, microcode update on the cores must be serialized until this
+ * requirement can be relaxed in the future. Right now, this is conservative
+ * and good.
+ */
+#define SPINUNIT 100 /* 100 nsec */
+
static int check_online_cpus(void)
{
if (num_online_cpus() == num_present_cpus())
@@ -496,23 +517,85 @@ static int check_online_cpus(void)
return -EINVAL;
}
-static enum ucode_state reload_for_cpu(int cpu)
+static atomic_t late_cpus;
+
+/*
+ * Returns:
+ * < 0 - on error
+ * 0 - no update done
+ * 1 - microcode was updated
+ */
+static int __reload_late(void *info)
{
- struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
+ unsigned int timeout = NSEC_PER_SEC;
+ int all_cpus = num_online_cpus();
+ int cpu = smp_processor_id();
+ enum ucode_state err;
+ int ret = 0;
+
+ atomic_dec(&late_cpus);
+
+ /*
+ * Wait for all CPUs to arrive. A load will not be attempted unless all
+ * CPUs show up.
+ * */
+ while (atomic_read(&late_cpus)) {
+ if (timeout < SPINUNIT) {
+ pr_err("Timeout while waiting for CPUs rendezvous, remaining: %d\n",
+ atomic_read(&late_cpus));
+ return -1;
+ }
+
+ ndelay(SPINUNIT);
+ timeout -= SPINUNIT;
+
+ touch_nmi_watchdog();
+ }
+
+ spin_lock(&update_lock);
+ apply_microcode_local(&err);
+ spin_unlock(&update_lock);
+
+ if (err > UCODE_NFOUND) {
+ pr_warn("Error reloading microcode on CPU %d\n", cpu);
+ ret = -1;
+ } else if (err == UCODE_UPDATED) {
+ ret = 1;
+ }
- if (!uci->valid)
- return UCODE_OK;
+ atomic_inc(&late_cpus);
- return apply_microcode_on_target(cpu);
+ while (atomic_read(&late_cpus) != all_cpus)
+ cpu_relax();
+
+ return ret;
+}
+
+/*
+ * Reload microcode late on all CPUs. Wait for a sec until they
+ * all gather together.
+ */
+static int microcode_reload_late(void)
+{
+ int ret;
+
+ atomic_set(&late_cpus, num_online_cpus());
+
+ ret = stop_machine_cpuslocked(__reload_late, NULL, cpu_online_mask);
+ if (ret < 0)
+ return ret;
+ else if (ret > 0)
+ microcode_check();
+
+ return ret;
}
static ssize_t reload_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t size)
{
- int cpu, bsp = boot_cpu_data.cpu_index;
enum ucode_state tmp_ret = UCODE_OK;
- bool do_callback = false;
+ int bsp = boot_cpu_data.cpu_index;
unsigned long val;
ssize_t ret = 0;
@@ -534,30 +617,13 @@ static ssize_t reload_store(struct devic
goto put;
mutex_lock(µcode_mutex);
-
- for_each_online_cpu(cpu) {
- tmp_ret = reload_for_cpu(cpu);
- if (tmp_ret > UCODE_NFOUND) {
- pr_warn("Error reloading microcode on CPU %d\n", cpu);
-
- /* set retval for the first encountered reload error */
- if (!ret)
- ret = -EINVAL;
- }
-
- if (tmp_ret == UCODE_UPDATED)
- do_callback = true;
- }
-
- if (!ret && do_callback)
- microcode_check();
-
+ ret = microcode_reload_late();
mutex_unlock(µcode_mutex);
put:
put_online_cpus();
- if (!ret)
+ if (ret >= 0)
ret = size;
return ret;
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Request microcode on the BSP
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-request-microcode-on-the-bsp.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From cfb52a5a09c8ae3a1dafb44ce549fde5b69e8117 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 28 Feb 2018 11:28:45 +0100
Subject: x86/microcode: Request microcode on the BSP
From: Borislav Petkov <bp(a)suse.de>
commit cfb52a5a09c8ae3a1dafb44ce549fde5b69e8117 upstream.
... so that any newer version can land in the cache and can later be
fished out by the application functions. Do that before grabbing the
hotplug lock.
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-7-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -499,15 +499,10 @@ static int check_online_cpus(void)
static enum ucode_state reload_for_cpu(int cpu)
{
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
- enum ucode_state ustate;
if (!uci->valid)
return UCODE_OK;
- ustate = microcode_ops->request_microcode_fw(cpu, µcode_pdev->dev, true);
- if (ustate != UCODE_OK)
- return ustate;
-
return apply_microcode_on_target(cpu);
}
@@ -515,11 +510,11 @@ static ssize_t reload_store(struct devic
struct device_attribute *attr,
const char *buf, size_t size)
{
+ int cpu, bsp = boot_cpu_data.cpu_index;
enum ucode_state tmp_ret = UCODE_OK;
bool do_callback = false;
unsigned long val;
ssize_t ret = 0;
- int cpu;
ret = kstrtoul(buf, 0, &val);
if (ret)
@@ -528,6 +523,10 @@ static ssize_t reload_store(struct devic
if (val != 1)
return size;
+ tmp_ret = microcode_ops->request_microcode_fw(bsp, µcode_pdev->dev, true);
+ if (tmp_ret != UCODE_OK)
+ return size;
+
get_online_cpus();
ret = check_online_cpus();
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode/intel: Writeback and invalidate caches before updating microcode
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 91df9fdf51492aec9fed6b4cbd33160886740f47 Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:42 +0100
Subject: x86/microcode/intel: Writeback and invalidate caches before updating microcode
From: Ashok Raj <ashok.raj(a)intel.com>
commit 91df9fdf51492aec9fed6b4cbd33160886740f47 upstream.
Updating microcode is less error prone when caches have been flushed and
depending on what exactly the microcode is updating. For example, some
of the issues around certain Broadwell parts can be addressed by doing a
full cache flush.
[ Borislav: Massage it and use native_wbinvd() in both cases. ]
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: http://lkml.kernel.org/r/1519352533-15992-3-git-send-email-ashok.raj@intel.…
Link: https://lkml.kernel.org/r/20180228102846.13447-4-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/intel.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -600,6 +600,12 @@ static int apply_microcode_early(struct
return UCODE_OK;
}
+ /*
+ * Writeback and invalidate caches before updating microcode to avoid
+ * internal issues depending on what the microcode is updating.
+ */
+ native_wbinvd();
+
/* write microcode via MSR 0x79 */
native_wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
@@ -816,6 +822,12 @@ static enum ucode_state apply_microcode_
return UCODE_OK;
}
+ /*
+ * Writeback and invalidate caches before updating microcode to avoid
+ * internal issues depending on what the microcode is updating.
+ */
+ native_wbinvd();
+
/* write microcode via MSR 0x79 */
wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode/intel: Look into the patch cache first
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-intel-look-into-the-patch-cache-first.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From d8c3b52c00a05036e0a6b315b4b17921a7b67997 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 28 Feb 2018 11:28:44 +0100
Subject: x86/microcode/intel: Look into the patch cache first
From: Borislav Petkov <bp(a)suse.de>
commit d8c3b52c00a05036e0a6b315b4b17921a7b67997 upstream.
The cache might contain a newer patch - look in there first.
A follow-on change will make sure newest patches are loaded into the
cache of microcode patches.
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-6-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/intel.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -791,9 +791,9 @@ static int collect_cpu_info(int cpu_num,
static enum ucode_state apply_microcode_intel(int cpu)
{
- struct microcode_intel *mc;
- struct ucode_cpu_info *uci;
+ struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
struct cpuinfo_x86 *c = &cpu_data(cpu);
+ struct microcode_intel *mc;
static int prev_rev;
u32 rev;
@@ -801,11 +801,10 @@ static enum ucode_state apply_microcode_
if (WARN_ON(raw_smp_processor_id() != cpu))
return UCODE_ERROR;
- uci = ucode_cpu_info + cpu;
- mc = uci->mc;
+ /* Look for a newer patch in our cache: */
+ mc = find_patch(uci);
if (!mc) {
- /* Look for a newer patch in our cache: */
- mc = find_patch(uci);
+ mc = uci->mc;
if (!mc)
return UCODE_NFOUND;
}
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode/intel: Check microcode revision before updating sibling threads
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From c182d2b7d0ca48e0d6ff16f7d883161238c447ed Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:41 +0100
Subject: x86/microcode/intel: Check microcode revision before updating sibling threads
From: Ashok Raj <ashok.raj(a)intel.com>
commit c182d2b7d0ca48e0d6ff16f7d883161238c447ed upstream.
After updating microcode on one of the threads of a core, the other
thread sibling automatically gets the update since the microcode
resources on a hyperthreaded core are shared between the two threads.
Check the microcode revision on the CPU before performing a microcode
update and thus save us the WRMSR 0x79 because it is a particularly
expensive operation.
[ Borislav: Massage changelog and coding style. ]
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: http://lkml.kernel.org/r/1519352533-15992-2-git-send-email-ashok.raj@intel.…
Link: https://lkml.kernel.org/r/20180228102846.13447-3-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/intel.c | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -589,6 +589,17 @@ static int apply_microcode_early(struct
if (!mc)
return 0;
+ /*
+ * Save us the MSR write below - which is a particular expensive
+ * operation - when the other hyperthread has updated the microcode
+ * already.
+ */
+ rev = intel_get_microcode_revision();
+ if (rev >= mc->hdr.rev) {
+ uci->cpu_sig.rev = rev;
+ return UCODE_OK;
+ }
+
/* write microcode via MSR 0x79 */
native_wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
@@ -776,7 +787,7 @@ static enum ucode_state apply_microcode_
{
struct microcode_intel *mc;
struct ucode_cpu_info *uci;
- struct cpuinfo_x86 *c;
+ struct cpuinfo_x86 *c = &cpu_data(cpu);
static int prev_rev;
u32 rev;
@@ -793,6 +804,18 @@ static enum ucode_state apply_microcode_
return UCODE_NFOUND;
}
+ /*
+ * Save us the MSR write below - which is a particular expensive
+ * operation - when the other hyperthread has updated the microcode
+ * already.
+ */
+ rev = intel_get_microcode_revision();
+ if (rev >= mc->hdr.rev) {
+ uci->cpu_sig.rev = rev;
+ c->microcode = rev;
+ return UCODE_OK;
+ }
+
/* write microcode via MSR 0x79 */
wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
@@ -813,8 +836,6 @@ static enum ucode_state apply_microcode_
prev_rev = rev;
}
- c = &cpu_data(cpu);
-
uci->cpu_sig.rev = rev;
c->microcode = rev;
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Get rid of struct apply_microcode_ctx
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 854857f5944c59a881ff607b37ed9ed41d031a3b Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 28 Feb 2018 11:28:40 +0100
Subject: x86/microcode: Get rid of struct apply_microcode_ctx
From: Borislav Petkov <bp(a)suse.de>
commit 854857f5944c59a881ff607b37ed9ed41d031a3b upstream.
It is a useless remnant from earlier times. Use the ucode_state enum
directly.
No functional change.
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-2-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -373,26 +373,23 @@ static int collect_cpu_info(int cpu)
return ret;
}
-struct apply_microcode_ctx {
- enum ucode_state err;
-};
-
static void apply_microcode_local(void *arg)
{
- struct apply_microcode_ctx *ctx = arg;
+ enum ucode_state *err = arg;
- ctx->err = microcode_ops->apply_microcode(smp_processor_id());
+ *err = microcode_ops->apply_microcode(smp_processor_id());
}
static int apply_microcode_on_target(int cpu)
{
- struct apply_microcode_ctx ctx = { .err = 0 };
+ enum ucode_state err;
int ret;
- ret = smp_call_function_single(cpu, apply_microcode_local, &ctx, 1);
- if (!ret)
- ret = ctx.err;
-
+ ret = smp_call_function_single(cpu, apply_microcode_local, &err, 1);
+ if (!ret) {
+ if (err == UCODE_ERROR)
+ ret = 1;
+ }
return ret;
}
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Fix CPU synchronization routine
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-fix-cpu-synchronization-routine.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From bb8c13d61a629276a162c1d2b1a20a815cbcfbb7 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 14 Mar 2018 19:36:15 +0100
Subject: x86/microcode: Fix CPU synchronization routine
From: Borislav Petkov <bp(a)suse.de>
commit bb8c13d61a629276a162c1d2b1a20a815cbcfbb7 upstream.
Emanuel reported an issue with a hang during microcode update because my
dumb idea to use one atomic synchronization variable for both rendezvous
- before and after update - was simply bollocks:
microcode: microcode_reload_late: late_cpus: 4
microcode: __reload_late: cpu 2 entered
microcode: __reload_late: cpu 1 entered
microcode: __reload_late: cpu 3 entered
microcode: __reload_late: cpu 0 entered
microcode: __reload_late: cpu 1 left
microcode: Timeout while waiting for CPUs rendezvous, remaining: 1
CPU1 above would finish, leave and the others will still spin waiting for
it to join.
So do two synchronization atomics instead, which makes the code a lot more
straightforward.
Also, since the update is serialized and it also takes quite some time per
microcode engine, increase the exit timeout by the number of CPUs on the
system.
That's ok because the moment all CPUs are done, that timeout will be cut
short.
Furthermore, panic when some of the CPUs timeout when returning from a
microcode update: we can't allow a system with not all cores updated.
Also, as an optimization, do not do the exit sync if microcode wasn't
updated.
Reported-by: Emanuel Czirai <xftroxgpx(a)protonmail.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Emanuel Czirai <xftroxgpx(a)protonmail.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Link: https://lkml.kernel.org/r/20180314183615.17629-2-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 68 +++++++++++++++++++++--------------
1 file changed, 41 insertions(+), 27 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -517,7 +517,29 @@ static int check_online_cpus(void)
return -EINVAL;
}
-static atomic_t late_cpus;
+static atomic_t late_cpus_in;
+static atomic_t late_cpus_out;
+
+static int __wait_for_cpus(atomic_t *t, long long timeout)
+{
+ int all_cpus = num_online_cpus();
+
+ atomic_inc(t);
+
+ while (atomic_read(t) < all_cpus) {
+ if (timeout < SPINUNIT) {
+ pr_err("Timeout while waiting for CPUs rendezvous, remaining: %d\n",
+ all_cpus - atomic_read(t));
+ return 1;
+ }
+
+ ndelay(SPINUNIT);
+ timeout -= SPINUNIT;
+
+ touch_nmi_watchdog();
+ }
+ return 0;
+}
/*
* Returns:
@@ -527,30 +549,16 @@ static atomic_t late_cpus;
*/
static int __reload_late(void *info)
{
- unsigned int timeout = NSEC_PER_SEC;
- int all_cpus = num_online_cpus();
int cpu = smp_processor_id();
enum ucode_state err;
int ret = 0;
- atomic_dec(&late_cpus);
-
/*
* Wait for all CPUs to arrive. A load will not be attempted unless all
* CPUs show up.
* */
- while (atomic_read(&late_cpus)) {
- if (timeout < SPINUNIT) {
- pr_err("Timeout while waiting for CPUs rendezvous, remaining: %d\n",
- atomic_read(&late_cpus));
- return -1;
- }
-
- ndelay(SPINUNIT);
- timeout -= SPINUNIT;
-
- touch_nmi_watchdog();
- }
+ if (__wait_for_cpus(&late_cpus_in, NSEC_PER_SEC))
+ return -1;
spin_lock(&update_lock);
apply_microcode_local(&err);
@@ -558,15 +566,22 @@ static int __reload_late(void *info)
if (err > UCODE_NFOUND) {
pr_warn("Error reloading microcode on CPU %d\n", cpu);
- ret = -1;
- } else if (err == UCODE_UPDATED) {
+ return -1;
+ /* siblings return UCODE_OK because their engine got updated already */
+ } else if (err == UCODE_UPDATED || err == UCODE_OK) {
ret = 1;
+ } else {
+ return ret;
}
- atomic_inc(&late_cpus);
-
- while (atomic_read(&late_cpus) != all_cpus)
- cpu_relax();
+ /*
+ * Increase the wait timeout to a safe value here since we're
+ * serializing the microcode update and that could take a while on a
+ * large number of CPUs. And that is fine as the *actual* timeout will
+ * be determined by the last CPU finished updating and thus cut short.
+ */
+ if (__wait_for_cpus(&late_cpus_out, NSEC_PER_SEC * num_online_cpus()))
+ panic("Timeout during microcode update!\n");
return ret;
}
@@ -579,12 +594,11 @@ static int microcode_reload_late(void)
{
int ret;
- atomic_set(&late_cpus, num_online_cpus());
+ atomic_set(&late_cpus_in, 0);
+ atomic_set(&late_cpus_out, 0);
ret = stop_machine_cpuslocked(__reload_late, NULL, cpu_online_mask);
- if (ret < 0)
- return ret;
- else if (ret > 0)
+ if (ret > 0)
microcode_check();
return ret;
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Do not upload microcode if CPUs are offline
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 30ec26da9967d0d785abc24073129a34c3211777 Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:43 +0100
Subject: x86/microcode: Do not upload microcode if CPUs are offline
From: Ashok Raj <ashok.raj(a)intel.com>
commit 30ec26da9967d0d785abc24073129a34c3211777 upstream.
Avoid loading microcode if any of the CPUs are offline, and issue a
warning. Having different microcode revisions on the system at any time
is outright dangerous.
[ Borislav: Massage changelog. ]
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: http://lkml.kernel.org/r/1519352533-15992-4-git-send-email-ashok.raj@intel.…
Link: https://lkml.kernel.org/r/20180228102846.13447-5-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -486,6 +486,16 @@ static void __exit microcode_dev_exit(vo
/* fake device for request_firmware */
static struct platform_device *microcode_pdev;
+static int check_online_cpus(void)
+{
+ if (num_online_cpus() == num_present_cpus())
+ return 0;
+
+ pr_err("Not all CPUs online, aborting microcode update.\n");
+
+ return -EINVAL;
+}
+
static enum ucode_state reload_for_cpu(int cpu)
{
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
@@ -519,7 +529,13 @@ static ssize_t reload_store(struct devic
return size;
get_online_cpus();
+
+ ret = check_online_cpus();
+ if (ret)
+ goto put;
+
mutex_lock(µcode_mutex);
+
for_each_online_cpu(cpu) {
tmp_ret = reload_for_cpu(cpu);
if (tmp_ret > UCODE_NFOUND) {
@@ -538,6 +554,8 @@ static ssize_t reload_store(struct devic
microcode_check();
mutex_unlock(µcode_mutex);
+
+put:
put_online_cpus();
if (!ret)
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/CPU: Check CPU feature bits after microcode upgrade
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 42ca8082e260dcfd8afa2afa6ec1940b9d41724c Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Fri, 16 Feb 2018 12:26:40 +0100
Subject: x86/CPU: Check CPU feature bits after microcode upgrade
From: Borislav Petkov <bp(a)suse.de>
commit 42ca8082e260dcfd8afa2afa6ec1940b9d41724c upstream.
With some microcode upgrades, new CPUID features can become visible on
the CPU. Check what the kernel has mirrored now and issue a warning
hinting at possible things the user/admin can do to make use of the
newly visible features.
Originally-by: Ashok Raj <ashok.raj(a)intel.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Reviewed-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Andy Lutomirski <luto(a)kernel.org>
Cc: Arjan van de Ven <arjan(a)linux.intel.com>
Cc: Borislav Petkov <bp(a)alien8.de>
Cc: Dan Williams <dan.j.williams(a)intel.com>
Cc: Dave Hansen <dave.hansen(a)linux.intel.com>
Cc: David Woodhouse <dwmw2(a)infradead.org>
Cc: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Cc: Josh Poimboeuf <jpoimboe(a)redhat.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Link: http://lkml.kernel.org/r/20180216112640.11554-4-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/common.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1757,5 +1757,25 @@ core_initcall(init_cpu_syscore);
*/
void microcode_check(void)
{
+ struct cpuinfo_x86 info;
+
perf_check_microcode();
+
+ /* Reload CPUID max function as it might've changed. */
+ info.cpuid_level = cpuid_eax(0);
+
+ /*
+ * Copy all capability leafs to pick up the synthetic ones so that
+ * memcmp() below doesn't fail on that. The ones coming from CPUID will
+ * get overwritten in get_cpu_cap().
+ */
+ memcpy(&info.x86_capability, &boot_cpu_data.x86_capability, sizeof(info.x86_capability));
+
+ get_cpu_cap(&info);
+
+ if (!memcmp(&info.x86_capability, &boot_cpu_data.x86_capability, sizeof(info.x86_capability)))
+ return;
+
+ pr_warn("x86/CPU: CPU features have changed after loading microcode, but might not take effect.\n");
+ pr_warn("x86/CPU: Please consider either early loading through initrd/built-in or a potential BIOS update.\n");
}
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/CPU: Add a microcode loader callback
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-cpu-add-a-microcode-loader-callback.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 1008c52c09dcb23d93f8e0ea83a6246265d2cce0 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Fri, 16 Feb 2018 12:26:39 +0100
Subject: x86/CPU: Add a microcode loader callback
From: Borislav Petkov <bp(a)suse.de>
commit 1008c52c09dcb23d93f8e0ea83a6246265d2cce0 upstream.
Add a callback function which the microcode loader calls when microcode
has been updated to a newer revision. Do the callback only when no error
was encountered during loading.
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Reviewed-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Andy Lutomirski <luto(a)kernel.org>
Cc: Arjan van de Ven <arjan(a)linux.intel.com>
Cc: Borislav Petkov <bp(a)alien8.de>
Cc: Dan Williams <dan.j.williams(a)intel.com>
Cc: Dave Hansen <dave.hansen(a)linux.intel.com>
Cc: David Woodhouse <dwmw2(a)infradead.org>
Cc: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Cc: Josh Poimboeuf <jpoimboe(a)redhat.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Link: http://lkml.kernel.org/r/20180216112640.11554-3-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/include/asm/processor.h | 1 +
arch/x86/kernel/cpu/common.c | 10 ++++++++++
arch/x86/kernel/cpu/microcode/core.c | 8 ++++++--
3 files changed, 17 insertions(+), 2 deletions(-)
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -969,4 +969,5 @@ bool xen_set_default_idle(void);
void stop_this_cpu(void *dummy);
void df_debug(struct pt_regs *regs, long error_code);
+void microcode_check(void);
#endif /* _ASM_X86_PROCESSOR_H */
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1749,3 +1749,13 @@ static int __init init_cpu_syscore(void)
return 0;
}
core_initcall(init_cpu_syscore);
+
+/*
+ * The microcode loader calls this upon late microcode load to recheck features,
+ * only when microcode has been updated. Caller holds microcode_mutex and CPU
+ * hotplug lock.
+ */
+void microcode_check(void)
+{
+ perf_check_microcode();
+}
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -509,6 +509,7 @@ static ssize_t reload_store(struct devic
const char *buf, size_t size)
{
enum ucode_state tmp_ret = UCODE_OK;
+ bool do_callback = false;
unsigned long val;
ssize_t ret = 0;
int cpu;
@@ -531,10 +532,13 @@ static ssize_t reload_store(struct devic
if (!ret)
ret = -EINVAL;
}
+
+ if (tmp_ret == UCODE_UPDATED)
+ do_callback = true;
}
- if (!ret && tmp_ret == UCODE_UPDATED)
- perf_check_microcode();
+ if (!ret && do_callback)
+ microcode_check();
mutex_unlock(µcode_mutex);
put_online_cpus();
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.15/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.15/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.15/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.15/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.15/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.15/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.15/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.15/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.15/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.15/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.15/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.15/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.15/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Synchronize late microcode loading
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-synchronize-late-microcode-loading.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From a5321aec6412b20b5ad15db2d6b916c05349dbff Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:46 +0100
Subject: x86/microcode: Synchronize late microcode loading
From: Ashok Raj <ashok.raj(a)intel.com>
commit a5321aec6412b20b5ad15db2d6b916c05349dbff upstream.
Original idea by Ashok, completely rewritten by Borislav.
Before you read any further: the early loading method is still the
preferred one and you should always do that. The following patch is
improving the late loading mechanism for long running jobs and cloud use
cases.
Gather all cores and serialize the microcode update on them by doing it
one-by-one to make the late update process as reliable as possible and
avoid potential issues caused by the microcode update.
[ Borislav: Rewrite completely. ]
Co-developed-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-8-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 118 +++++++++++++++++++++++++++--------
1 file changed, 92 insertions(+), 26 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -22,13 +22,16 @@
#define pr_fmt(fmt) "microcode: " fmt
#include <linux/platform_device.h>
+#include <linux/stop_machine.h>
#include <linux/syscore_ops.h>
#include <linux/miscdevice.h>
#include <linux/capability.h>
#include <linux/firmware.h>
#include <linux/kernel.h>
+#include <linux/delay.h>
#include <linux/mutex.h>
#include <linux/cpu.h>
+#include <linux/nmi.h>
#include <linux/fs.h>
#include <linux/mm.h>
@@ -64,6 +67,11 @@ LIST_HEAD(microcode_cache);
*/
static DEFINE_MUTEX(microcode_mutex);
+/*
+ * Serialize late loading so that CPUs get updated one-by-one.
+ */
+static DEFINE_SPINLOCK(update_lock);
+
struct ucode_cpu_info ucode_cpu_info[NR_CPUS];
struct cpu_info_ctx {
@@ -486,6 +494,19 @@ static void __exit microcode_dev_exit(vo
/* fake device for request_firmware */
static struct platform_device *microcode_pdev;
+/*
+ * Late loading dance. Why the heavy-handed stomp_machine effort?
+ *
+ * - HT siblings must be idle and not execute other code while the other sibling
+ * is loading microcode in order to avoid any negative interactions caused by
+ * the loading.
+ *
+ * - In addition, microcode update on the cores must be serialized until this
+ * requirement can be relaxed in the future. Right now, this is conservative
+ * and good.
+ */
+#define SPINUNIT 100 /* 100 nsec */
+
static int check_online_cpus(void)
{
if (num_online_cpus() == num_present_cpus())
@@ -496,23 +517,85 @@ static int check_online_cpus(void)
return -EINVAL;
}
-static enum ucode_state reload_for_cpu(int cpu)
+static atomic_t late_cpus;
+
+/*
+ * Returns:
+ * < 0 - on error
+ * 0 - no update done
+ * 1 - microcode was updated
+ */
+static int __reload_late(void *info)
{
- struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
+ unsigned int timeout = NSEC_PER_SEC;
+ int all_cpus = num_online_cpus();
+ int cpu = smp_processor_id();
+ enum ucode_state err;
+ int ret = 0;
+
+ atomic_dec(&late_cpus);
+
+ /*
+ * Wait for all CPUs to arrive. A load will not be attempted unless all
+ * CPUs show up.
+ * */
+ while (atomic_read(&late_cpus)) {
+ if (timeout < SPINUNIT) {
+ pr_err("Timeout while waiting for CPUs rendezvous, remaining: %d\n",
+ atomic_read(&late_cpus));
+ return -1;
+ }
+
+ ndelay(SPINUNIT);
+ timeout -= SPINUNIT;
+
+ touch_nmi_watchdog();
+ }
+
+ spin_lock(&update_lock);
+ apply_microcode_local(&err);
+ spin_unlock(&update_lock);
+
+ if (err > UCODE_NFOUND) {
+ pr_warn("Error reloading microcode on CPU %d\n", cpu);
+ ret = -1;
+ } else if (err == UCODE_UPDATED) {
+ ret = 1;
+ }
- if (!uci->valid)
- return UCODE_OK;
+ atomic_inc(&late_cpus);
- return apply_microcode_on_target(cpu);
+ while (atomic_read(&late_cpus) != all_cpus)
+ cpu_relax();
+
+ return ret;
+}
+
+/*
+ * Reload microcode late on all CPUs. Wait for a sec until they
+ * all gather together.
+ */
+static int microcode_reload_late(void)
+{
+ int ret;
+
+ atomic_set(&late_cpus, num_online_cpus());
+
+ ret = stop_machine_cpuslocked(__reload_late, NULL, cpu_online_mask);
+ if (ret < 0)
+ return ret;
+ else if (ret > 0)
+ microcode_check();
+
+ return ret;
}
static ssize_t reload_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t size)
{
- int cpu, bsp = boot_cpu_data.cpu_index;
enum ucode_state tmp_ret = UCODE_OK;
- bool do_callback = false;
+ int bsp = boot_cpu_data.cpu_index;
unsigned long val;
ssize_t ret = 0;
@@ -534,30 +617,13 @@ static ssize_t reload_store(struct devic
goto put;
mutex_lock(µcode_mutex);
-
- for_each_online_cpu(cpu) {
- tmp_ret = reload_for_cpu(cpu);
- if (tmp_ret > UCODE_NFOUND) {
- pr_warn("Error reloading microcode on CPU %d\n", cpu);
-
- /* set retval for the first encountered reload error */
- if (!ret)
- ret = -EINVAL;
- }
-
- if (tmp_ret == UCODE_UPDATED)
- do_callback = true;
- }
-
- if (!ret && do_callback)
- microcode_check();
-
+ ret = microcode_reload_late();
mutex_unlock(µcode_mutex);
put:
put_online_cpus();
- if (!ret)
+ if (ret >= 0)
ret = size;
return ret;
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Request microcode on the BSP
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-request-microcode-on-the-bsp.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From cfb52a5a09c8ae3a1dafb44ce549fde5b69e8117 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 28 Feb 2018 11:28:45 +0100
Subject: x86/microcode: Request microcode on the BSP
From: Borislav Petkov <bp(a)suse.de>
commit cfb52a5a09c8ae3a1dafb44ce549fde5b69e8117 upstream.
... so that any newer version can land in the cache and can later be
fished out by the application functions. Do that before grabbing the
hotplug lock.
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-7-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -499,15 +499,10 @@ static int check_online_cpus(void)
static enum ucode_state reload_for_cpu(int cpu)
{
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
- enum ucode_state ustate;
if (!uci->valid)
return UCODE_OK;
- ustate = microcode_ops->request_microcode_fw(cpu, µcode_pdev->dev, true);
- if (ustate != UCODE_OK)
- return ustate;
-
return apply_microcode_on_target(cpu);
}
@@ -515,11 +510,11 @@ static ssize_t reload_store(struct devic
struct device_attribute *attr,
const char *buf, size_t size)
{
+ int cpu, bsp = boot_cpu_data.cpu_index;
enum ucode_state tmp_ret = UCODE_OK;
bool do_callback = false;
unsigned long val;
ssize_t ret = 0;
- int cpu;
ret = kstrtoul(buf, 0, &val);
if (ret)
@@ -528,6 +523,10 @@ static ssize_t reload_store(struct devic
if (val != 1)
return size;
+ tmp_ret = microcode_ops->request_microcode_fw(bsp, µcode_pdev->dev, true);
+ if (tmp_ret != UCODE_OK)
+ return size;
+
get_online_cpus();
ret = check_online_cpus();
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode/intel: Writeback and invalidate caches before updating microcode
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 91df9fdf51492aec9fed6b4cbd33160886740f47 Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:42 +0100
Subject: x86/microcode/intel: Writeback and invalidate caches before updating microcode
From: Ashok Raj <ashok.raj(a)intel.com>
commit 91df9fdf51492aec9fed6b4cbd33160886740f47 upstream.
Updating microcode is less error prone when caches have been flushed and
depending on what exactly the microcode is updating. For example, some
of the issues around certain Broadwell parts can be addressed by doing a
full cache flush.
[ Borislav: Massage it and use native_wbinvd() in both cases. ]
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: http://lkml.kernel.org/r/1519352533-15992-3-git-send-email-ashok.raj@intel.…
Link: https://lkml.kernel.org/r/20180228102846.13447-4-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/intel.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -600,6 +600,12 @@ static int apply_microcode_early(struct
return UCODE_OK;
}
+ /*
+ * Writeback and invalidate caches before updating microcode to avoid
+ * internal issues depending on what the microcode is updating.
+ */
+ native_wbinvd();
+
/* write microcode via MSR 0x79 */
native_wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
@@ -816,6 +822,12 @@ static enum ucode_state apply_microcode_
return UCODE_OK;
}
+ /*
+ * Writeback and invalidate caches before updating microcode to avoid
+ * internal issues depending on what the microcode is updating.
+ */
+ native_wbinvd();
+
/* write microcode via MSR 0x79 */
wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode/intel: Check microcode revision before updating sibling threads
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From c182d2b7d0ca48e0d6ff16f7d883161238c447ed Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:41 +0100
Subject: x86/microcode/intel: Check microcode revision before updating sibling threads
From: Ashok Raj <ashok.raj(a)intel.com>
commit c182d2b7d0ca48e0d6ff16f7d883161238c447ed upstream.
After updating microcode on one of the threads of a core, the other
thread sibling automatically gets the update since the microcode
resources on a hyperthreaded core are shared between the two threads.
Check the microcode revision on the CPU before performing a microcode
update and thus save us the WRMSR 0x79 because it is a particularly
expensive operation.
[ Borislav: Massage changelog and coding style. ]
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: http://lkml.kernel.org/r/1519352533-15992-2-git-send-email-ashok.raj@intel.…
Link: https://lkml.kernel.org/r/20180228102846.13447-3-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/intel.c | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -589,6 +589,17 @@ static int apply_microcode_early(struct
if (!mc)
return 0;
+ /*
+ * Save us the MSR write below - which is a particular expensive
+ * operation - when the other hyperthread has updated the microcode
+ * already.
+ */
+ rev = intel_get_microcode_revision();
+ if (rev >= mc->hdr.rev) {
+ uci->cpu_sig.rev = rev;
+ return UCODE_OK;
+ }
+
/* write microcode via MSR 0x79 */
native_wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
@@ -776,7 +787,7 @@ static enum ucode_state apply_microcode_
{
struct microcode_intel *mc;
struct ucode_cpu_info *uci;
- struct cpuinfo_x86 *c;
+ struct cpuinfo_x86 *c = &cpu_data(cpu);
static int prev_rev;
u32 rev;
@@ -793,6 +804,18 @@ static enum ucode_state apply_microcode_
return UCODE_NFOUND;
}
+ /*
+ * Save us the MSR write below - which is a particular expensive
+ * operation - when the other hyperthread has updated the microcode
+ * already.
+ */
+ rev = intel_get_microcode_revision();
+ if (rev >= mc->hdr.rev) {
+ uci->cpu_sig.rev = rev;
+ c->microcode = rev;
+ return UCODE_OK;
+ }
+
/* write microcode via MSR 0x79 */
wrmsrl(MSR_IA32_UCODE_WRITE, (unsigned long)mc->bits);
@@ -813,8 +836,6 @@ static enum ucode_state apply_microcode_
prev_rev = rev;
}
- c = &cpu_data(cpu);
-
uci->cpu_sig.rev = rev;
c->microcode = rev;
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode/intel: Look into the patch cache first
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-intel-look-into-the-patch-cache-first.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From d8c3b52c00a05036e0a6b315b4b17921a7b67997 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 28 Feb 2018 11:28:44 +0100
Subject: x86/microcode/intel: Look into the patch cache first
From: Borislav Petkov <bp(a)suse.de>
commit d8c3b52c00a05036e0a6b315b4b17921a7b67997 upstream.
The cache might contain a newer patch - look in there first.
A follow-on change will make sure newest patches are loaded into the
cache of microcode patches.
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-6-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/intel.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -791,9 +791,9 @@ static int collect_cpu_info(int cpu_num,
static enum ucode_state apply_microcode_intel(int cpu)
{
- struct microcode_intel *mc;
- struct ucode_cpu_info *uci;
+ struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
struct cpuinfo_x86 *c = &cpu_data(cpu);
+ struct microcode_intel *mc;
static int prev_rev;
u32 rev;
@@ -801,11 +801,10 @@ static enum ucode_state apply_microcode_
if (WARN_ON(raw_smp_processor_id() != cpu))
return UCODE_ERROR;
- uci = ucode_cpu_info + cpu;
- mc = uci->mc;
+ /* Look for a newer patch in our cache: */
+ mc = find_patch(uci);
if (!mc) {
- /* Look for a newer patch in our cache: */
- mc = find_patch(uci);
+ mc = uci->mc;
if (!mc)
return UCODE_NFOUND;
}
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Get rid of struct apply_microcode_ctx
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 854857f5944c59a881ff607b37ed9ed41d031a3b Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 28 Feb 2018 11:28:40 +0100
Subject: x86/microcode: Get rid of struct apply_microcode_ctx
From: Borislav Petkov <bp(a)suse.de>
commit 854857f5944c59a881ff607b37ed9ed41d031a3b upstream.
It is a useless remnant from earlier times. Use the ucode_state enum
directly.
No functional change.
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: https://lkml.kernel.org/r/20180228102846.13447-2-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -373,26 +373,23 @@ static int collect_cpu_info(int cpu)
return ret;
}
-struct apply_microcode_ctx {
- enum ucode_state err;
-};
-
static void apply_microcode_local(void *arg)
{
- struct apply_microcode_ctx *ctx = arg;
+ enum ucode_state *err = arg;
- ctx->err = microcode_ops->apply_microcode(smp_processor_id());
+ *err = microcode_ops->apply_microcode(smp_processor_id());
}
static int apply_microcode_on_target(int cpu)
{
- struct apply_microcode_ctx ctx = { .err = 0 };
+ enum ucode_state err;
int ret;
- ret = smp_call_function_single(cpu, apply_microcode_local, &ctx, 1);
- if (!ret)
- ret = ctx.err;
-
+ ret = smp_call_function_single(cpu, apply_microcode_local, &err, 1);
+ if (!ret) {
+ if (err == UCODE_ERROR)
+ ret = 1;
+ }
return ret;
}
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Fix CPU synchronization routine
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-fix-cpu-synchronization-routine.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From bb8c13d61a629276a162c1d2b1a20a815cbcfbb7 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Wed, 14 Mar 2018 19:36:15 +0100
Subject: x86/microcode: Fix CPU synchronization routine
From: Borislav Petkov <bp(a)suse.de>
commit bb8c13d61a629276a162c1d2b1a20a815cbcfbb7 upstream.
Emanuel reported an issue with a hang during microcode update because my
dumb idea to use one atomic synchronization variable for both rendezvous
- before and after update - was simply bollocks:
microcode: microcode_reload_late: late_cpus: 4
microcode: __reload_late: cpu 2 entered
microcode: __reload_late: cpu 1 entered
microcode: __reload_late: cpu 3 entered
microcode: __reload_late: cpu 0 entered
microcode: __reload_late: cpu 1 left
microcode: Timeout while waiting for CPUs rendezvous, remaining: 1
CPU1 above would finish, leave and the others will still spin waiting for
it to join.
So do two synchronization atomics instead, which makes the code a lot more
straightforward.
Also, since the update is serialized and it also takes quite some time per
microcode engine, increase the exit timeout by the number of CPUs on the
system.
That's ok because the moment all CPUs are done, that timeout will be cut
short.
Furthermore, panic when some of the CPUs timeout when returning from a
microcode update: we can't allow a system with not all cores updated.
Also, as an optimization, do not do the exit sync if microcode wasn't
updated.
Reported-by: Emanuel Czirai <xftroxgpx(a)protonmail.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Emanuel Czirai <xftroxgpx(a)protonmail.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Link: https://lkml.kernel.org/r/20180314183615.17629-2-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 68 +++++++++++++++++++++--------------
1 file changed, 41 insertions(+), 27 deletions(-)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -517,7 +517,29 @@ static int check_online_cpus(void)
return -EINVAL;
}
-static atomic_t late_cpus;
+static atomic_t late_cpus_in;
+static atomic_t late_cpus_out;
+
+static int __wait_for_cpus(atomic_t *t, long long timeout)
+{
+ int all_cpus = num_online_cpus();
+
+ atomic_inc(t);
+
+ while (atomic_read(t) < all_cpus) {
+ if (timeout < SPINUNIT) {
+ pr_err("Timeout while waiting for CPUs rendezvous, remaining: %d\n",
+ all_cpus - atomic_read(t));
+ return 1;
+ }
+
+ ndelay(SPINUNIT);
+ timeout -= SPINUNIT;
+
+ touch_nmi_watchdog();
+ }
+ return 0;
+}
/*
* Returns:
@@ -527,30 +549,16 @@ static atomic_t late_cpus;
*/
static int __reload_late(void *info)
{
- unsigned int timeout = NSEC_PER_SEC;
- int all_cpus = num_online_cpus();
int cpu = smp_processor_id();
enum ucode_state err;
int ret = 0;
- atomic_dec(&late_cpus);
-
/*
* Wait for all CPUs to arrive. A load will not be attempted unless all
* CPUs show up.
* */
- while (atomic_read(&late_cpus)) {
- if (timeout < SPINUNIT) {
- pr_err("Timeout while waiting for CPUs rendezvous, remaining: %d\n",
- atomic_read(&late_cpus));
- return -1;
- }
-
- ndelay(SPINUNIT);
- timeout -= SPINUNIT;
-
- touch_nmi_watchdog();
- }
+ if (__wait_for_cpus(&late_cpus_in, NSEC_PER_SEC))
+ return -1;
spin_lock(&update_lock);
apply_microcode_local(&err);
@@ -558,15 +566,22 @@ static int __reload_late(void *info)
if (err > UCODE_NFOUND) {
pr_warn("Error reloading microcode on CPU %d\n", cpu);
- ret = -1;
- } else if (err == UCODE_UPDATED) {
+ return -1;
+ /* siblings return UCODE_OK because their engine got updated already */
+ } else if (err == UCODE_UPDATED || err == UCODE_OK) {
ret = 1;
+ } else {
+ return ret;
}
- atomic_inc(&late_cpus);
-
- while (atomic_read(&late_cpus) != all_cpus)
- cpu_relax();
+ /*
+ * Increase the wait timeout to a safe value here since we're
+ * serializing the microcode update and that could take a while on a
+ * large number of CPUs. And that is fine as the *actual* timeout will
+ * be determined by the last CPU finished updating and thus cut short.
+ */
+ if (__wait_for_cpus(&late_cpus_out, NSEC_PER_SEC * num_online_cpus()))
+ panic("Timeout during microcode update!\n");
return ret;
}
@@ -579,12 +594,11 @@ static int microcode_reload_late(void)
{
int ret;
- atomic_set(&late_cpus, num_online_cpus());
+ atomic_set(&late_cpus_in, 0);
+ atomic_set(&late_cpus_out, 0);
ret = stop_machine_cpuslocked(__reload_late, NULL, cpu_online_mask);
- if (ret < 0)
- return ret;
- else if (ret > 0)
+ if (ret > 0)
microcode_check();
return ret;
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/microcode: Do not upload microcode if CPUs are offline
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 30ec26da9967d0d785abc24073129a34c3211777 Mon Sep 17 00:00:00 2001
From: Ashok Raj <ashok.raj(a)intel.com>
Date: Wed, 28 Feb 2018 11:28:43 +0100
Subject: x86/microcode: Do not upload microcode if CPUs are offline
From: Ashok Raj <ashok.raj(a)intel.com>
commit 30ec26da9967d0d785abc24073129a34c3211777 upstream.
Avoid loading microcode if any of the CPUs are offline, and issue a
warning. Having different microcode revisions on the system at any time
is outright dangerous.
[ Borislav: Massage changelog. ]
Signed-off-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Reviewed-by: Tom Lendacky <thomas.lendacky(a)amd.com>
Cc: Arjan Van De Ven <arjan.van.de.ven(a)intel.com>
Link: http://lkml.kernel.org/r/1519352533-15992-4-git-send-email-ashok.raj@intel.…
Link: https://lkml.kernel.org/r/20180228102846.13447-5-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/microcode/core.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -486,6 +486,16 @@ static void __exit microcode_dev_exit(vo
/* fake device for request_firmware */
static struct platform_device *microcode_pdev;
+static int check_online_cpus(void)
+{
+ if (num_online_cpus() == num_present_cpus())
+ return 0;
+
+ pr_err("Not all CPUs online, aborting microcode update.\n");
+
+ return -EINVAL;
+}
+
static enum ucode_state reload_for_cpu(int cpu)
{
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
@@ -519,7 +529,13 @@ static ssize_t reload_store(struct devic
return size;
get_online_cpus();
+
+ ret = check_online_cpus();
+ if (ret)
+ goto put;
+
mutex_lock(µcode_mutex);
+
for_each_online_cpu(cpu) {
tmp_ret = reload_for_cpu(cpu);
if (tmp_ret > UCODE_NFOUND) {
@@ -538,6 +554,8 @@ static ssize_t reload_store(struct devic
microcode_check();
mutex_unlock(µcode_mutex);
+
+put:
put_online_cpus();
if (!ret)
Patches currently in stable-queue which might be from ashok.raj(a)intel.com are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/CPU: Check CPU feature bits after microcode upgrade
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 42ca8082e260dcfd8afa2afa6ec1940b9d41724c Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Fri, 16 Feb 2018 12:26:40 +0100
Subject: x86/CPU: Check CPU feature bits after microcode upgrade
From: Borislav Petkov <bp(a)suse.de>
commit 42ca8082e260dcfd8afa2afa6ec1940b9d41724c upstream.
With some microcode upgrades, new CPUID features can become visible on
the CPU. Check what the kernel has mirrored now and issue a warning
hinting at possible things the user/admin can do to make use of the
newly visible features.
Originally-by: Ashok Raj <ashok.raj(a)intel.com>
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Reviewed-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Andy Lutomirski <luto(a)kernel.org>
Cc: Arjan van de Ven <arjan(a)linux.intel.com>
Cc: Borislav Petkov <bp(a)alien8.de>
Cc: Dan Williams <dan.j.williams(a)intel.com>
Cc: Dave Hansen <dave.hansen(a)linux.intel.com>
Cc: David Woodhouse <dwmw2(a)infradead.org>
Cc: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Cc: Josh Poimboeuf <jpoimboe(a)redhat.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Link: http://lkml.kernel.org/r/20180216112640.11554-4-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/cpu/common.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1732,5 +1732,25 @@ core_initcall(init_cpu_syscore);
*/
void microcode_check(void)
{
+ struct cpuinfo_x86 info;
+
perf_check_microcode();
+
+ /* Reload CPUID max function as it might've changed. */
+ info.cpuid_level = cpuid_eax(0);
+
+ /*
+ * Copy all capability leafs to pick up the synthetic ones so that
+ * memcmp() below doesn't fail on that. The ones coming from CPUID will
+ * get overwritten in get_cpu_cap().
+ */
+ memcpy(&info.x86_capability, &boot_cpu_data.x86_capability, sizeof(info.x86_capability));
+
+ get_cpu_cap(&info);
+
+ if (!memcmp(&info.x86_capability, &boot_cpu_data.x86_capability, sizeof(info.x86_capability)))
+ return;
+
+ pr_warn("x86/CPU: CPU features have changed after loading microcode, but might not take effect.\n");
+ pr_warn("x86/CPU: Please consider either early loading through initrd/built-in or a potential BIOS update.\n");
}
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
This is a note to let you know that I've just added the patch titled
x86/CPU: Add a microcode loader callback
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-cpu-add-a-microcode-loader-callback.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 1008c52c09dcb23d93f8e0ea83a6246265d2cce0 Mon Sep 17 00:00:00 2001
From: Borislav Petkov <bp(a)suse.de>
Date: Fri, 16 Feb 2018 12:26:39 +0100
Subject: x86/CPU: Add a microcode loader callback
From: Borislav Petkov <bp(a)suse.de>
commit 1008c52c09dcb23d93f8e0ea83a6246265d2cce0 upstream.
Add a callback function which the microcode loader calls when microcode
has been updated to a newer revision. Do the callback only when no error
was encountered during loading.
Tested-by: Ashok Raj <ashok.raj(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Reviewed-by: Ashok Raj <ashok.raj(a)intel.com>
Cc: Andy Lutomirski <luto(a)kernel.org>
Cc: Arjan van de Ven <arjan(a)linux.intel.com>
Cc: Borislav Petkov <bp(a)alien8.de>
Cc: Dan Williams <dan.j.williams(a)intel.com>
Cc: Dave Hansen <dave.hansen(a)linux.intel.com>
Cc: David Woodhouse <dwmw2(a)infradead.org>
Cc: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Cc: Josh Poimboeuf <jpoimboe(a)redhat.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Link: http://lkml.kernel.org/r/20180216112640.11554-3-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/include/asm/processor.h | 1 +
arch/x86/kernel/cpu/common.c | 10 ++++++++++
arch/x86/kernel/cpu/microcode/core.c | 8 ++++++--
3 files changed, 17 insertions(+), 2 deletions(-)
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -968,4 +968,5 @@ bool xen_set_default_idle(void);
void stop_this_cpu(void *dummy);
void df_debug(struct pt_regs *regs, long error_code);
+void microcode_check(void);
#endif /* _ASM_X86_PROCESSOR_H */
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1724,3 +1724,13 @@ static int __init init_cpu_syscore(void)
return 0;
}
core_initcall(init_cpu_syscore);
+
+/*
+ * The microcode loader calls this upon late microcode load to recheck features,
+ * only when microcode has been updated. Caller holds microcode_mutex and CPU
+ * hotplug lock.
+ */
+void microcode_check(void)
+{
+ perf_check_microcode();
+}
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -509,6 +509,7 @@ static ssize_t reload_store(struct devic
const char *buf, size_t size)
{
enum ucode_state tmp_ret = UCODE_OK;
+ bool do_callback = false;
unsigned long val;
ssize_t ret = 0;
int cpu;
@@ -531,10 +532,13 @@ static ssize_t reload_store(struct devic
if (!ret)
ret = -EINVAL;
}
+
+ if (tmp_ret == UCODE_UPDATED)
+ do_callback = true;
}
- if (!ret && tmp_ret == UCODE_UPDATED)
- perf_check_microcode();
+ if (!ret && do_callback)
+ microcode_check();
mutex_unlock(µcode_mutex);
put_online_cpus();
Patches currently in stable-queue which might be from bp(a)suse.de are
queue-4.14/x86-microcode-intel-check-microcode-revision-before-updating-sibling-threads.patch
queue-4.14/x86-microcode-attempt-late-loading-only-when-new-microcode-is-present.patch
queue-4.14/x86-microcode-propagate-return-value-from-updating-functions.patch
queue-4.14/x86-cpu-check-cpu-feature-bits-after-microcode-upgrade.patch
queue-4.14/x86-microcode-intel-writeback-and-invalidate-caches-before-updating-microcode.patch
queue-4.14/x86-microcode-intel-look-into-the-patch-cache-first.patch
queue-4.14/edac-mv64x60-fix-an-error-handling-path.patch
queue-4.14/x86-microcode-request-microcode-on-the-bsp.patch
queue-4.14/x86-microcode-get-rid-of-struct-apply_microcode_ctx.patch
queue-4.14/x86-microcode-fix-cpu-synchronization-routine.patch
queue-4.14/x86-microcode-synchronize-late-microcode-loading.patch
queue-4.14/x86-microcode-do-not-upload-microcode-if-cpus-are-offline.patch
queue-4.14/x86-cpu-add-a-microcode-loader-callback.patch
From: David Rivshin <DRivshin(a)allworx.com>
NUMREGBYTES (which is used as the size for gdb_regs[]) is incorrectly based
on DBG_MAX_REG_NUM instead of GDB_MAX_REGS. DBG_MAX_REG_NUM is the number
of total registers, while GDB_MAX_REGS is the number of 'unsigned longs'
it takes to serialize those registers. Since FP registers require 3
'unsigned longs' each, DBG_MAX_REG_NUM is smaller than GDB_MAX_REGS.
This causes GDB 8.0 give the following error on connect:
"Truncated register 19 in remote 'g' packet"
This also causes the register serialization/deserialization logic to
overflow gdb_regs[], overwriting whatever follows.
Fixes: 834b2964b7ab ("kgdb,arm: fix register dump")
Cc: <stable(a)vger.kernel.org> # 2.6.37+
Signed-off-by: David Rivshin <drivshin(a)allworx.com>
---
arch/arm/include/asm/kgdb.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/include/asm/kgdb.h b/arch/arm/include/asm/kgdb.h
index 3b73fdcf3627a..8de1100d10674 100644
--- a/arch/arm/include/asm/kgdb.h
+++ b/arch/arm/include/asm/kgdb.h
@@ -77,7 +77,7 @@ extern int kgdb_fault_expected;
#define KGDB_MAX_NO_CPUS 1
#define BUFMAX 400
-#define NUMREGBYTES (DBG_MAX_REG_NUM << 2)
+#define NUMREGBYTES (GDB_MAX_REGS << 2)
#define NUMCRITREGBYTES (32 << 2)
#define _R0 0
base-commit: 0adb32858b0bddf4ada5f364a84ed60b196dbcda
--
2.14.3
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 6.5796)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: .
The bot has also determined it's probably a bug fixing patch. (score: 15.7018)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Failed to apply! Possible dependencies:
7cbe0932c2f2 ("KEYS: Convert KEYCTL_DH_COMPUTE to use the crypto KPP API")
v4.4.127: Failed to apply! Possible dependencies:
7cbe0932c2f2 ("KEYS: Convert KEYCTL_DH_COMPUTE to use the crypto KPP API")
ddbb41148724 ("KEYS: Add KEYCTL_DH_COMPUTE command")
--
Thanks,
Sasha
When doing a modeset where the sink is transitioning from D3 to D0 , it
would sometimes be possible for the initial power_up_phy() to start
timing out. This would only be observed in the last action before the
sink went into D3 mode was intel_dp_sink_dpms(DRM_MODE_DPMS_OFF). We
originally thought this might be an issue with us accidentally shutting
off the aux block when putting the sink into D3, but since the DP spec
mandates that sinks must wake up within 1ms while we have 100ms to
respond to an ESI irq, this didn't really add up. Turns out that the
problem is more subtle then that:
It turns out that the timeout is from us not enabling DPMS on the MST
hub before actually trying to initiate sideband communications. This
would cause the first sideband communication (power_up_phy()), to start
timing out because the sink wasn't ready to respond. Afterwards, we
would call intel_dp_sink_dpms(DRM_MODE_DPMS_ON) in
intel_ddi_pre_enable_dp(), which would actually result in waking up the
sink so that sideband requests would work again.
Since DPMS is what lets us actually bring the hub up into a state where
sideband communications become functional again, we just need to make
sure to enable DPMS on the display before attempting to perform sideband
communications.
Changes since v1:
- Remove comment above if (!intel_dp->is_mst) - vsryjala
- Move intel_dp_sink_dpms() for MST into intel_dp_post_disable_mst() to
keep enable/disable paths symmetrical
- Improve commit message - dhnkrn
Changes since v2:
- Only send DPMS off when we're disabling the last sink, and only send
DPMS on when we're enabling the first sink - dhnkrn
Changes since v3:
- Check against is_mst, not intel_dp->is_mst - dhnkrn/vsyrjala
Signed-off-by: Lyude Paul <lyude(a)redhat.com>
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan(a)intel.com>
Cc: Ville Syrjälä <ville.syrjala(a)linux.intel.com>
Cc: Laura Abbott <labbott(a)redhat.com>
Cc: stable(a)vger.kernel.org
Fixes: ad260ab32a4d9 ("drm/i915/dp: Write to SET_POWER dpcd to enable MST hub.")
---
drivers/gpu/drm/i915/intel_ddi.c | 8 ++++++--
drivers/gpu/drm/i915/intel_dp_mst.c | 8 +++++++-
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index a6672a9abd85..92cb26b18a9b 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2324,7 +2324,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
intel_prepare_dp_ddi_buffers(encoder, crtc_state);
intel_ddi_init_dp_buf_reg(encoder);
- intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
+ if (!is_mst)
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
intel_dp_start_link_train(intel_dp);
if (port != PORT_A || INTEL_GEN(dev_priv) >= 9)
intel_dp_stop_link_train(intel_dp);
@@ -2422,12 +2423,15 @@ static void intel_ddi_post_disable_dp(struct intel_encoder *encoder,
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
struct intel_dp *intel_dp = &dig_port->dp;
+ bool is_mst = intel_crtc_has_type(old_crtc_state,
+ INTEL_OUTPUT_DP_MST);
/*
* Power down sink before disabling the port, otherwise we end
* up getting interrupts from the sink on detecting link loss.
*/
- intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
+ if (!is_mst)
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
intel_disable_ddi_buf(encoder);
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index c3de0918ee13..9e6956c08688 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -180,9 +180,11 @@ static void intel_mst_post_disable_dp(struct intel_encoder *encoder,
intel_dp->active_mst_links--;
intel_mst->connector = NULL;
- if (intel_dp->active_mst_links == 0)
+ if (intel_dp->active_mst_links == 0) {
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
intel_dig_port->base.post_disable(&intel_dig_port->base,
old_crtc_state, NULL);
+ }
DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
}
@@ -223,7 +225,11 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder,
DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
+ if (intel_dp->active_mst_links == 0)
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
+
drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, true);
+
if (intel_dp->active_mst_links == 0)
intel_dig_port->base.pre_enable(&intel_dig_port->base,
pipe_config, NULL);
--
2.14.3
Hi,
[This is an automated email]
This commit has been processed because it contains a -stable tag.
The stable tag indicates that it's relevant for the following trees: all
The bot has also determined it's probably a bug fixing patch. (score: 97.7389)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 7.2454)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 9e0d39d8a6a0 tpm: Remove useless priv field in struct tpm_vendor_specific.
The bot has also determined it's probably a bug fixing patch. (score: 19.6716)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 6.8160)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 19.9792)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build failed! Errors:
set_memory.h: No such file or directory
v4.4.127: Build failed! Errors:
set_memory.h: No such file or directory
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 22.1404)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: ecdd09597a57 block/loop: fix race between I/O and set_status.
The bot has also determined it's probably a bug fixing patch. (score: 97.9620)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 8.0623)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 44.5575)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Failed to apply! Possible dependencies:
62cccb8c8e7a ("mm: simplify lock_page_memcg()")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 55d7de9de6c3 Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver.
The bot has also determined it's probably a bug fixing patch. (score: 3.9486)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Failed to apply! Possible dependencies:
f6e3ef3e4d35 ("lan78xx: relocate mdix setting to phy driver")
v4.4.127: Failed to apply! Possible dependencies:
f6e3ef3e4d35 ("lan78xx: relocate mdix setting to phy driver")
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 55d7de9de6c3 Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver.
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Failed to apply! Possible dependencies:
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
v4.14.33: Failed to apply! Possible dependencies:
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
v4.9.93: Failed to apply! Possible dependencies:
02dc1f3d613d ("lan78xx: add LAN7801 MAC only support")
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
8c56ea410efb ("net: lan78xx: fix build errors when linux/phy*.h is removed from net/dsa.h")
cc89c323a30e ("lan78xx: Use irq_domain for phy interrupt from USB Int. EP")
v4.4.127: Failed to apply! Possible dependencies:
02dc1f3d613d ("lan78xx: add LAN7801 MAC only support")
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
8c56ea410efb ("net: lan78xx: fix build errors when linux/phy*.h is removed from net/dsa.h")
cc89c323a30e ("lan78xx: Use irq_domain for phy interrupt from USB Int. EP")
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 55d7de9de6c3 Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver.
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Failed to apply! Possible dependencies:
6e76510e7e19 ("net: usb: lan78xx: use new api ethtool_{get|set}_link_ksettings")
v4.4.127: Failed to apply! Possible dependencies:
20ff55655a93 ("lan78xx: handle statistics counter rollover")
349e0c5e2237 ("lan78xx: add ethtool set & get pause functions")
6e76510e7e19 ("net: usb: lan78xx: use new api ethtool_{get|set}_link_ksettings")
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 55d7de9de6c3 Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver.
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Failed to apply! Possible dependencies:
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
95fc5753103d ("lan78xx: Lan7801 Support for Fixed PHY")
v4.14.33: Failed to apply! Possible dependencies:
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
95fc5753103d ("lan78xx: Lan7801 Support for Fixed PHY")
v4.9.93: Failed to apply! Possible dependencies:
02dc1f3d613d ("lan78xx: add LAN7801 MAC only support")
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
8c56ea410efb ("net: lan78xx: fix build errors when linux/phy*.h is removed from net/dsa.h")
95fc5753103d ("lan78xx: Lan7801 Support for Fixed PHY")
cc89c323a30e ("lan78xx: Use irq_domain for phy interrupt from USB Int. EP")
v4.4.127: Failed to apply! Possible dependencies:
02dc1f3d613d ("lan78xx: add LAN7801 MAC only support")
3b51cc75eba2 ("lan78xx: remove redundant initialization of pointer 'phydev'")
8c56ea410efb ("net: lan78xx: fix build errors when linux/phy*.h is removed from net/dsa.h")
95fc5753103d ("lan78xx: Lan7801 Support for Fixed PHY")
cc89c323a30e ("lan78xx: Use irq_domain for phy interrupt from USB Int. EP")
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 14.0185)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: bbc09e7842a5 net/sched: fix idr leak on the error path of tcf_bpf_init().
The bot has also determined it's probably a bug fixing patch. (score: 52.8129)
The bot has tested the following trees: v4.16.1.
v4.16.1: Build OK!
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 8.8613)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Failed to apply! Possible dependencies:
1c9de5bf4286 ("usbip: vhci-hcd: Add USB3 SuperSpeed support")
v4.4.127: Failed to apply! Possible dependencies:
1c9de5bf4286 ("usbip: vhci-hcd: Add USB3 SuperSpeed support")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 5.8567)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Failed to apply! Possible dependencies:
1d0155035918 ("ipv6: rename IP6_INC_STATS_BH()")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
When doing a modeset where the sink is transitioning from D3 to D0 , it
would sometimes be possible for the initial power_up_phy() to start
timing out. This would only be observed in the last action before the
sink went into D3 mode was intel_dp_sink_dpms(DRM_MODE_DPMS_OFF). We
originally thought this might be an issue with us accidentally shutting
off the aux block when putting the sink into D3, but since the DP spec
mandates that sinks must wake up within 1ms while we have 100ms to
respond to an ESI irq, this didn't really add up. Turns out that the
problem is more subtle then that:
It turns out that the timeout is from us not enabling DPMS on the MST
hub before actually trying to initiate sideband communications. This
would cause the first sideband communication (power_up_phy()), to start
timing out because the sink wasn't ready to respond. Afterwards, we
would call intel_dp_sink_dpms(DRM_MODE_DPMS_ON) in
intel_ddi_pre_enable_dp(), which would actually result in waking up the
sink so that sideband requests would work again.
Since DPMS is what lets us actually bring the hub up into a state where
sideband communications become functional again, we just need to make
sure to enable DPMS on the display before attempting to perform sideband
communications.
Changes since v1:
- Remove comment above if (!intel_dp->is_mst) - vsryjala
- Move intel_dp_sink_dpms() for MST into intel_dp_post_disable_mst() to
keep enable/disable paths symmetrical
- Improve commit message - dhnkrn
Signed-off-by: Lyude Paul <lyude(a)redhat.com>
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan(a)intel.com>
Cc: Ville Syrjälä <ville.syrjala(a)linux.intel.com>
Cc: Laura Abbott <labbott(a)redhat.com>
Cc: stable(a)vger.kernel.org
Fixes: ad260ab32a4d9 ("drm/i915/dp: Write to SET_POWER dpcd to enable MST hub.")
---
This email should hopefully actually be picked up by patchwork this
time, hooray!
drivers/gpu/drm/i915/intel_ddi.c | 6 ++++--
drivers/gpu/drm/i915/intel_dp_mst.c | 2 ++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index a6672a9abd85..c0bf7419e1c1 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2324,7 +2324,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
intel_prepare_dp_ddi_buffers(encoder, crtc_state);
intel_ddi_init_dp_buf_reg(encoder);
- intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
+ if (!intel_dp->is_mst)
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
intel_dp_start_link_train(intel_dp);
if (port != PORT_A || INTEL_GEN(dev_priv) >= 9)
intel_dp_stop_link_train(intel_dp);
@@ -2427,7 +2428,8 @@ static void intel_ddi_post_disable_dp(struct intel_encoder *encoder,
* Power down sink before disabling the port, otherwise we end
* up getting interrupts from the sink on detecting link loss.
*/
- intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
+ if (!intel_dp->is_mst)
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
intel_disable_ddi_buf(encoder);
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index c3de0918ee13..2493bd1e0e59 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -176,6 +176,7 @@ static void intel_mst_post_disable_dp(struct intel_encoder *encoder,
*/
drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port,
false);
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
intel_dp->active_mst_links--;
@@ -223,6 +224,7 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder,
DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
+ intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, true);
if (intel_dp->active_mst_links == 0)
intel_dig_port->base.pre_enable(&intel_dig_port->base,
--
2.14.3
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 7.6606)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build failed! Errors:
marvell.c:878:13: error: implicit declaration of function ‘phy_modify_paged’; did you mean ‘phys_to_page’? [-Werror=implicit-function-declaration]
v4.14.33: Build failed! Errors:
marvell.c:874:13: error: implicit declaration of function ‘phy_modify_paged’; did you mean ‘phys_to_page’? [-Werror=implicit-function-declaration]
v4.9.93: Build failed! Errors:
marvell.c:829:13: error: implicit declaration of function ‘phy_modify_paged’; did you mean ‘phys_to_page’? [-Werror=implicit-function-declaration]
marvell.c:830:12: error: ‘MII_MARVELL_LED_PAGE’ undeclared (first use in this function); did you mean ‘MII_MARVELL_PHY_PAGE’?
v4.4.127: Failed to apply! Possible dependencies:
407353ec85cc ("phy: marvell: Fix 88E1510 initialization")
d2fa47d9dd5c ("phy: marvell: Add ethtool statistics counters")
fdecf36fcefa ("phy: marvell: fix LED configuration via marvell,reg-init")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 5.1905)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Failed to apply! Possible dependencies:
989782dcdc91 ("afs: Overhaul cell database management")
v4.9.93: Failed to apply! Possible dependencies:
989782dcdc91 ("afs: Overhaul cell database management")
v4.4.127: Failed to apply! Possible dependencies:
989782dcdc91 ("afs: Overhaul cell database management")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: ac6614b76478 [readdir] constify ->actor.
The bot has also determined it's probably a bug fixing patch. (score: 8.8479)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Build OK!
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Build OK!
v4.4.127: Build OK!
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 0ef58b0a05c1 hv_netvsc: change GPAD teardown order on older versions.
The bot has also determined it's probably a bug fixing patch. (score: 3.6623)
The bot has tested the following trees: v4.16.1.
v4.16.1: Failed to apply! Possible dependencies:
2afc5d61a719 ("hv_netvsc: Use Windows version instead of NVSP version on GPAD teardown")
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 0ef58b0a05c1 hv_netvsc: change GPAD teardown order on older versions.
The bot has also determined it's probably a bug fixing patch. (score: 60.7987)
The bot has tested the following trees: v4.16.1.
v4.16.1: Failed to apply! Possible dependencies:
7992894c305e ("hv_netvsc: Split netvsc_revoke_buf() and netvsc_teardown_gpadl()")
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 0ef58b0a05c1 hv_netvsc: change GPAD teardown order on older versions.
The bot has also determined it's probably a bug fixing patch. (score: 19.6070)
The bot has tested the following trees: v4.16.1.
v4.16.1: Build OK!
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed because it contains a "Fixes:" tag,
fixing commit: a983b5ebee57 mm: memcontrol: fix excessive complexity in memory.stat reporting.
The bot has also determined it's probably a bug fixing patch. (score: 35.1321)
The bot has tested the following trees: v4.16.1.
v4.16.1: Build OK!
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 19.8603)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Failed to apply! Possible dependencies:
Unable to calculate
v4.15.16: Build OK!
v4.14.33: Build OK!
v4.9.93: Failed to apply! Possible dependencies:
2a842acab109 ("block: introduce new block status code type")
b6800ec54c74 ("Make scsi_result_to_blk_status() recognize CONDITION MET")
v4.4.127: Failed to apply! Possible dependencies:
2a842acab109 ("block: introduce new block status code type")
b6800ec54c74 ("Make scsi_result_to_blk_status() recognize CONDITION MET")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
Hi,
[This is an automated email]
This commit has been processed by the -stable helper bot and determined
to be a high probability candidate for -stable trees. (score: 32.4825)
The bot has tested the following trees: v4.16.1, v4.15.16, v4.14.33, v4.9.93, v4.4.127.
v4.16.1: Failed to apply! Possible dependencies:
Unable to calculate
v4.15.16: Failed to apply! Possible dependencies:
Unable to calculate
v4.14.33: Failed to apply! Possible dependencies:
Unable to calculate
v4.9.93: Failed to apply! Possible dependencies:
Unable to calculate
v4.4.127: Failed to apply! Possible dependencies:
1c4941fd53af ("locking/pvqspinlock: Allow limited lock stealing")
1f03e8d29192 ("locking/barriers: Replace smp_cond_acquire() with smp_cond_load_acquire()")
64d816cba06c ("locking/qspinlock: Use _acquire/_release() versions of cmpxchg() & xchg()")
Please let us know if you'd like to have this patch included in a stable tree.
--
Thanks,
Sasha
This is a note to let you know that I've just added the patch titled
Kbuild: provide a __UNIQUE_ID for clang
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
kbuild-provide-a-__unique_id-for-clang.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From b41c29b0527c7fd6a95d0f71274abb79933bf960 Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <arnd(a)arndb.de>
Date: Mon, 8 Feb 2016 15:38:32 +0100
Subject: Kbuild: provide a __UNIQUE_ID for clang
From: Arnd Bergmann <arnd(a)arndb.de>
commit b41c29b0527c7fd6a95d0f71274abb79933bf960 upstream.
The default __UNIQUE_ID macro in compiler.h fails to work for some drivers:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:615:1: error: redefinition of
'__UNIQUE_ID_firmware615'
BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");
This adds a copy of the version we use for gcc-4.3 and higher, as the same
one works with all versions of clang that I could find in svn (2.6 and higher).
Signed-off-by: Arnd Bergmann <arnd(a)arndb.de>
Signed-off-by: Michal Marek <mmarek(a)suse.com>
Cc: Matthias Kaehlcke <mka(a)google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
include/linux/compiler-clang.h | 5 +++++
1 file changed, 5 insertions(+)
--- a/include/linux/compiler-clang.h
+++ b/include/linux/compiler-clang.h
@@ -10,3 +10,8 @@
#undef uninitialized_var
#define uninitialized_var(x) x = *(&(x))
#endif
+
+/* same as gcc, this was present in clang-2.6 so we can assume it works
+ * with any version that can compile the kernel
+ */
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
Patches currently in stable-queue which might be from arnd(a)arndb.de are
queue-4.4/net-mlx5-avoid-build-warning-for-uniprocessor.patch
queue-4.4/xen-avoid-type-warning-in-xchg_xen_ulong.patch
queue-4.4/kbuild-provide-a-__unique_id-for-clang.patch
This is a note to let you know that I've just added the patch titled
objtool: Add Clang support
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
objtool-add-clang-support.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 3c1f05835cbf9fdfe60b81c718d82ceb94b6c55e Mon Sep 17 00:00:00 2001
From: Josh Poimboeuf <jpoimboe(a)redhat.com>
Date: Thu, 22 Mar 2018 13:00:37 -0500
Subject: objtool: Add Clang support
From: Josh Poimboeuf <jpoimboe(a)redhat.com>
commit 3c1f05835cbf9fdfe60b81c718d82ceb94b6c55e upstream.
Since the ORC unwinder was made the default on x86_64, Clang-built
defconfig kernels have triggered some new objtool warnings:
drivers/gpu/drm/i915/i915_gpu_error.o: warning: objtool: i915_error_printf()+0x6c: return with modified stack frame
drivers/gpu/drm/i915/intel_display.o: warning: objtool: pipe_config_err()+0xa6: return with modified stack frame
The problem is that objtool has never seen clang-built binaries before.
Shockingly enough, objtool is apparently able to follow the code flow
mostly fine, except for one instruction sequence. Instead of a LEAVE
instruction, clang restores RSP and RBP the long way:
67c: 48 89 ec mov %rbp,%rsp
67f: 5d pop %rbp
Teach objtool about this new code sequence.
Reported-and-test-by: Matthias Kaehlcke <mka(a)chromium.org>
Signed-off-by: Josh Poimboeuf <jpoimboe(a)redhat.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Matthias Kaehlcke <mka(a)chromium.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Link: http://lkml.kernel.org/r/fce88ce81c356eedcae7f00ed349cfaddb3363cc.152174158…
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
tools/objtool/check.c | 11 +++++++++++
1 file changed, 11 insertions(+)
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -1385,6 +1385,17 @@ static int update_insn_state(struct inst
state->vals[op->dest.reg].offset = -state->stack_size;
}
+ else if (op->src.reg == CFI_BP && op->dest.reg == CFI_SP &&
+ cfa->base == CFI_BP) {
+
+ /*
+ * mov %rbp, %rsp
+ *
+ * Restore the original stack pointer (Clang).
+ */
+ state->stack_size = -state->regs[CFI_BP].offset;
+ }
+
else if (op->dest.reg == cfa->base) {
/* mov %reg, %rsp */
Patches currently in stable-queue which might be from jpoimboe(a)redhat.com are
queue-4.14/objtool-add-clang-support.patch
This is a note to let you know that I've just added the patch titled
futex: Remove requirement for lock_page() in get_futex_key()
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
futex-remove-requirement-for-lock_page-in-get_futex_key.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 65d8fc777f6dcfee12785c057a6b57f679641c90 Mon Sep 17 00:00:00 2001
From: Mel Gorman <mgorman(a)suse.de>
Date: Tue, 9 Feb 2016 11:15:14 -0800
Subject: futex: Remove requirement for lock_page() in get_futex_key()
From: Mel Gorman <mgorman(a)suse.de>
commit 65d8fc777f6dcfee12785c057a6b57f679641c90 upstream.
When dealing with key handling for shared futexes, we can drastically reduce
the usage/need of the page lock. 1) For anonymous pages, the associated futex
object is the mm_struct which does not require the page lock. 2) For inode
based, keys, we can check under RCU read lock if the page mapping is still
valid and take reference to the inode. This just leaves one rare race that
requires the page lock in the slow path when examining the swapcache.
Additionally realtime users currently have a problem with the page lock being
contended for unbounded periods of time during futex operations.
Task A
get_futex_key()
lock_page()
---> preempted
Now any other task trying to lock that page will have to wait until
task A gets scheduled back in, which is an unbound time.
With this patch, we pretty much have a lockless futex_get_key().
Experiments show that this patch can boost/speedup the hashing of shared
futexes with the perf futex benchmarks (which is good for measuring such
change) by up to 45% when there are high (> 100) thread counts on a 60 core
Westmere. Lower counts are pretty much in the noise range or less than 10%,
but mid range can be seen at over 30% overall throughput (hash ops/sec).
This makes anon-mem shared futexes much closer to its private counterpart.
Signed-off-by: Mel Gorman <mgorman(a)suse.de>
[ Ported on top of thp refcount rework, changelog, comments, fixes. ]
Signed-off-by: Davidlohr Bueso <dbueso(a)suse.de>
Reviewed-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: Chris Mason <clm(a)fb.com>
Cc: Darren Hart <dvhart(a)linux.intel.com>
Cc: Hugh Dickins <hughd(a)google.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Mel Gorman <mgorman(a)techsingularity.net>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
Cc: dave(a)stgolabs.net
Link: http://lkml.kernel.org/r/1455045314-8305-3-git-send-email-dave@stgolabs.net
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Chenbo Feng <fengc(a)google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
kernel/futex.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 91 insertions(+), 7 deletions(-)
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -470,6 +470,7 @@ get_futex_key(u32 __user *uaddr, int fsh
unsigned long address = (unsigned long)uaddr;
struct mm_struct *mm = current->mm;
struct page *page, *page_head;
+ struct address_space *mapping;
int err, ro = 0;
/*
@@ -555,7 +556,19 @@ again:
}
#endif
- lock_page(page_head);
+ /*
+ * The treatment of mapping from this point on is critical. The page
+ * lock protects many things but in this context the page lock
+ * stabilizes mapping, prevents inode freeing in the shared
+ * file-backed region case and guards against movement to swap cache.
+ *
+ * Strictly speaking the page lock is not needed in all cases being
+ * considered here and page lock forces unnecessarily serialization
+ * From this point on, mapping will be re-verified if necessary and
+ * page lock will be acquired only if it is unavoidable
+ */
+
+ mapping = READ_ONCE(page_head->mapping);
/*
* If page_head->mapping is NULL, then it cannot be a PageAnon
@@ -572,18 +585,31 @@ again:
* shmem_writepage move it from filecache to swapcache beneath us:
* an unlikely race, but we do need to retry for page_head->mapping.
*/
- if (!page_head->mapping) {
- int shmem_swizzled = PageSwapCache(page_head);
+ if (unlikely(!mapping)) {
+ int shmem_swizzled;
+
+ /*
+ * Page lock is required to identify which special case above
+ * applies. If this is really a shmem page then the page lock
+ * will prevent unexpected transitions.
+ */
+ lock_page(page);
+ shmem_swizzled = PageSwapCache(page) || page->mapping;
unlock_page(page_head);
put_page(page_head);
+
if (shmem_swizzled)
goto again;
+
return -EFAULT;
}
/*
* Private mappings are handled in a simple way.
*
+ * If the futex key is stored on an anonymous page, then the associated
+ * object is the mm which is implicitly pinned by the calling process.
+ *
* NOTE: When userspace waits on a MAP_SHARED mapping, even if
* it's a read-only handle, it's expected that futexes attach to
* the object not the particular process.
@@ -601,16 +627,74 @@ again:
key->both.offset |= FUT_OFF_MMSHARED; /* ref taken on mm */
key->private.mm = mm;
key->private.address = address;
+
+ get_futex_key_refs(key); /* implies smp_mb(); (B) */
+
} else {
+ struct inode *inode;
+
+ /*
+ * The associated futex object in this case is the inode and
+ * the page->mapping must be traversed. Ordinarily this should
+ * be stabilised under page lock but it's not strictly
+ * necessary in this case as we just want to pin the inode, not
+ * update the radix tree or anything like that.
+ *
+ * The RCU read lock is taken as the inode is finally freed
+ * under RCU. If the mapping still matches expectations then the
+ * mapping->host can be safely accessed as being a valid inode.
+ */
+ rcu_read_lock();
+
+ if (READ_ONCE(page_head->mapping) != mapping) {
+ rcu_read_unlock();
+ put_page(page_head);
+
+ goto again;
+ }
+
+ inode = READ_ONCE(mapping->host);
+ if (!inode) {
+ rcu_read_unlock();
+ put_page(page_head);
+
+ goto again;
+ }
+
+ /*
+ * Take a reference unless it is about to be freed. Previously
+ * this reference was taken by ihold under the page lock
+ * pinning the inode in place so i_lock was unnecessary. The
+ * only way for this check to fail is if the inode was
+ * truncated in parallel so warn for now if this happens.
+ *
+ * We are not calling into get_futex_key_refs() in file-backed
+ * cases, therefore a successful atomic_inc return below will
+ * guarantee that get_futex_key() will still imply smp_mb(); (B).
+ */
+ if (WARN_ON_ONCE(!atomic_inc_not_zero(&inode->i_count))) {
+ rcu_read_unlock();
+ put_page(page_head);
+
+ goto again;
+ }
+
+ /* Should be impossible but lets be paranoid for now */
+ if (WARN_ON_ONCE(inode->i_mapping != mapping)) {
+ err = -EFAULT;
+ rcu_read_unlock();
+ iput(inode);
+
+ goto out;
+ }
+
key->both.offset |= FUT_OFF_INODE; /* inode-based key */
- key->shared.inode = page_head->mapping->host;
+ key->shared.inode = inode;
key->shared.pgoff = basepage_index(page);
+ rcu_read_unlock();
}
- get_futex_key_refs(key); /* implies MB (B) */
-
out:
- unlock_page(page_head);
put_page(page_head);
return err;
}
Patches currently in stable-queue which might be from mgorman(a)suse.de are
queue-4.4/futex-remove-requirement-for-lock_page-in-get_futex_key.patch
This is a note to let you know that I've just added the patch titled
futex: Remove requirement for lock_page() in get_futex_key()
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
futex-remove-requirement-for-lock_page-in-get_futex_key.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 65d8fc777f6dcfee12785c057a6b57f679641c90 Mon Sep 17 00:00:00 2001
From: Mel Gorman <mgorman(a)suse.de>
Date: Tue, 9 Feb 2016 11:15:14 -0800
Subject: futex: Remove requirement for lock_page() in get_futex_key()
From: Mel Gorman <mgorman(a)suse.de>
commit 65d8fc777f6dcfee12785c057a6b57f679641c90 upstream.
When dealing with key handling for shared futexes, we can drastically reduce
the usage/need of the page lock. 1) For anonymous pages, the associated futex
object is the mm_struct which does not require the page lock. 2) For inode
based, keys, we can check under RCU read lock if the page mapping is still
valid and take reference to the inode. This just leaves one rare race that
requires the page lock in the slow path when examining the swapcache.
Additionally realtime users currently have a problem with the page lock being
contended for unbounded periods of time during futex operations.
Task A
get_futex_key()
lock_page()
---> preempted
Now any other task trying to lock that page will have to wait until
task A gets scheduled back in, which is an unbound time.
With this patch, we pretty much have a lockless futex_get_key().
Experiments show that this patch can boost/speedup the hashing of shared
futexes with the perf futex benchmarks (which is good for measuring such
change) by up to 45% when there are high (> 100) thread counts on a 60 core
Westmere. Lower counts are pretty much in the noise range or less than 10%,
but mid range can be seen at over 30% overall throughput (hash ops/sec).
This makes anon-mem shared futexes much closer to its private counterpart.
Signed-off-by: Mel Gorman <mgorman(a)suse.de>
[ Ported on top of thp refcount rework, changelog, comments, fixes. ]
Signed-off-by: Davidlohr Bueso <dbueso(a)suse.de>
Reviewed-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: Chris Mason <clm(a)fb.com>
Cc: Darren Hart <dvhart(a)linux.intel.com>
Cc: Hugh Dickins <hughd(a)google.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Mel Gorman <mgorman(a)techsingularity.net>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
Cc: dave(a)stgolabs.net
Link: http://lkml.kernel.org/r/1455045314-8305-3-git-send-email-dave@stgolabs.net
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Chenbo Feng <fengc(a)google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
kernel/futex.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 91 insertions(+), 7 deletions(-)
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -400,6 +400,7 @@ get_futex_key(u32 __user *uaddr, int fsh
unsigned long address = (unsigned long)uaddr;
struct mm_struct *mm = current->mm;
struct page *page, *page_head;
+ struct address_space *mapping;
int err, ro = 0;
/*
@@ -478,7 +479,19 @@ again:
}
#endif
- lock_page(page_head);
+ /*
+ * The treatment of mapping from this point on is critical. The page
+ * lock protects many things but in this context the page lock
+ * stabilizes mapping, prevents inode freeing in the shared
+ * file-backed region case and guards against movement to swap cache.
+ *
+ * Strictly speaking the page lock is not needed in all cases being
+ * considered here and page lock forces unnecessarily serialization
+ * From this point on, mapping will be re-verified if necessary and
+ * page lock will be acquired only if it is unavoidable
+ */
+
+ mapping = READ_ONCE(page_head->mapping);
/*
* If page_head->mapping is NULL, then it cannot be a PageAnon
@@ -495,18 +508,31 @@ again:
* shmem_writepage move it from filecache to swapcache beneath us:
* an unlikely race, but we do need to retry for page_head->mapping.
*/
- if (!page_head->mapping) {
- int shmem_swizzled = PageSwapCache(page_head);
+ if (unlikely(!mapping)) {
+ int shmem_swizzled;
+
+ /*
+ * Page lock is required to identify which special case above
+ * applies. If this is really a shmem page then the page lock
+ * will prevent unexpected transitions.
+ */
+ lock_page(page);
+ shmem_swizzled = PageSwapCache(page) || page->mapping;
unlock_page(page_head);
put_page(page_head);
+
if (shmem_swizzled)
goto again;
+
return -EFAULT;
}
/*
* Private mappings are handled in a simple way.
*
+ * If the futex key is stored on an anonymous page, then the associated
+ * object is the mm which is implicitly pinned by the calling process.
+ *
* NOTE: When userspace waits on a MAP_SHARED mapping, even if
* it's a read-only handle, it's expected that futexes attach to
* the object not the particular process.
@@ -524,16 +550,74 @@ again:
key->both.offset |= FUT_OFF_MMSHARED; /* ref taken on mm */
key->private.mm = mm;
key->private.address = address;
+
+ get_futex_key_refs(key); /* implies smp_mb(); (B) */
+
} else {
+ struct inode *inode;
+
+ /*
+ * The associated futex object in this case is the inode and
+ * the page->mapping must be traversed. Ordinarily this should
+ * be stabilised under page lock but it's not strictly
+ * necessary in this case as we just want to pin the inode, not
+ * update the radix tree or anything like that.
+ *
+ * The RCU read lock is taken as the inode is finally freed
+ * under RCU. If the mapping still matches expectations then the
+ * mapping->host can be safely accessed as being a valid inode.
+ */
+ rcu_read_lock();
+
+ if (READ_ONCE(page_head->mapping) != mapping) {
+ rcu_read_unlock();
+ put_page(page_head);
+
+ goto again;
+ }
+
+ inode = READ_ONCE(mapping->host);
+ if (!inode) {
+ rcu_read_unlock();
+ put_page(page_head);
+
+ goto again;
+ }
+
+ /*
+ * Take a reference unless it is about to be freed. Previously
+ * this reference was taken by ihold under the page lock
+ * pinning the inode in place so i_lock was unnecessary. The
+ * only way for this check to fail is if the inode was
+ * truncated in parallel so warn for now if this happens.
+ *
+ * We are not calling into get_futex_key_refs() in file-backed
+ * cases, therefore a successful atomic_inc return below will
+ * guarantee that get_futex_key() will still imply smp_mb(); (B).
+ */
+ if (WARN_ON_ONCE(!atomic_inc_not_zero(&inode->i_count))) {
+ rcu_read_unlock();
+ put_page(page_head);
+
+ goto again;
+ }
+
+ /* Should be impossible but lets be paranoid for now */
+ if (WARN_ON_ONCE(inode->i_mapping != mapping)) {
+ err = -EFAULT;
+ rcu_read_unlock();
+ iput(inode);
+
+ goto out;
+ }
+
key->both.offset |= FUT_OFF_INODE; /* inode-based key */
- key->shared.inode = page_head->mapping->host;
+ key->shared.inode = inode;
key->shared.pgoff = basepage_index(page);
+ rcu_read_unlock();
}
- get_futex_key_refs(key); /* implies MB (B) */
-
out:
- unlock_page(page_head);
put_page(page_head);
return err;
}
Patches currently in stable-queue which might be from mgorman(a)suse.de are
queue-3.18/futex-remove-requirement-for-lock_page-in-get_futex_key.patch
This is a note to let you know that I've just added the patch titled
random: use lockless method of accessing and updating f->reg_idx
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
random-use-lockless-method-of-accessing-and-updating-f-reg_idx.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 92e75428ffc90e2a0321062379f883f3671cfebe Mon Sep 17 00:00:00 2001
From: Theodore Ts'o <tytso(a)mit.edu>
Date: Wed, 7 Jun 2017 19:01:32 -0400
Subject: random: use lockless method of accessing and updating f->reg_idx
From: Theodore Ts'o <tytso(a)mit.edu>
commit 92e75428ffc90e2a0321062379f883f3671cfebe upstream.
Linus pointed out that there is a much more efficient way of avoiding
the problem that we were trying to address in commit 9dfa7bba35ac0:
"fix race in drivers/char/random.c:get_reg()".
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Cc: Michael Schmitz <schmitzmic(a)gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/char/random.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1115,15 +1115,15 @@ static void add_interrupt_bench(cycles_t
static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs)
{
__u32 *ptr = (__u32 *) regs;
- unsigned long flags;
+ unsigned int idx;
if (regs == NULL)
return 0;
- local_irq_save(flags);
- if (f->reg_idx >= sizeof(struct pt_regs) / sizeof(__u32))
- f->reg_idx = 0;
- ptr += f->reg_idx++;
- local_irq_restore(flags);
+ idx = READ_ONCE(f->reg_idx);
+ if (idx >= sizeof(struct pt_regs) / sizeof(__u32))
+ idx = 0;
+ ptr += idx++;
+ WRITE_ONCE(f->reg_idx, idx);
return *ptr;
}
Patches currently in stable-queue which might be from tytso(a)mit.edu are
queue-4.9/fix-race-in-drivers-char-random.c-get_reg.patch
queue-4.9/ext4-handle-the-rest-of-ext4_mb_load_buddy-enomem-errors.patch
queue-4.9/ext4-fix-off-by-one-on-max-nr_pages-in-ext4_find_unwritten_pgoff.patch
queue-4.9/random-use-lockless-method-of-accessing-and-updating-f-reg_idx.patch
This is a note to let you know that I've just added the patch titled
random: use lockless method of accessing and updating f->reg_idx
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
random-use-lockless-method-of-accessing-and-updating-f-reg_idx.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 92e75428ffc90e2a0321062379f883f3671cfebe Mon Sep 17 00:00:00 2001
From: Theodore Ts'o <tytso(a)mit.edu>
Date: Wed, 7 Jun 2017 19:01:32 -0400
Subject: random: use lockless method of accessing and updating f->reg_idx
From: Theodore Ts'o <tytso(a)mit.edu>
commit 92e75428ffc90e2a0321062379f883f3671cfebe upstream.
Linus pointed out that there is a much more efficient way of avoiding
the problem that we were trying to address in commit 9dfa7bba35ac0:
"fix race in drivers/char/random.c:get_reg()".
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Cc: Michael Schmitz <schmitzmic(a)gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/char/random.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -886,15 +886,15 @@ static void add_interrupt_bench(cycles_t
static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs)
{
__u32 *ptr = (__u32 *) regs;
- unsigned long flags;
+ unsigned int idx;
if (regs == NULL)
return 0;
- local_irq_save(flags);
- if (f->reg_idx >= sizeof(struct pt_regs) / sizeof(__u32))
- f->reg_idx = 0;
- ptr += f->reg_idx++;
- local_irq_restore(flags);
+ idx = READ_ONCE(f->reg_idx);
+ if (idx >= sizeof(struct pt_regs) / sizeof(__u32))
+ idx = 0;
+ ptr += idx++;
+ WRITE_ONCE(f->reg_idx, idx);
return *ptr;
}
Patches currently in stable-queue which might be from tytso(a)mit.edu are
queue-4.4/fix-race-in-drivers-char-random.c-get_reg.patch
queue-4.4/ext4-handle-the-rest-of-ext4_mb_load_buddy-enomem-errors.patch
queue-4.4/ext4-fix-off-by-one-on-max-nr_pages-in-ext4_find_unwritten_pgoff.patch
queue-4.4/random-use-lockless-method-of-accessing-and-updating-f-reg_idx.patch
This is a note to let you know that I've just added the patch titled
random: use lockless method of accessing and updating f->reg_idx
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
random-use-lockless-method-of-accessing-and-updating-f-reg_idx.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From 92e75428ffc90e2a0321062379f883f3671cfebe Mon Sep 17 00:00:00 2001
From: Theodore Ts'o <tytso(a)mit.edu>
Date: Wed, 7 Jun 2017 19:01:32 -0400
Subject: random: use lockless method of accessing and updating f->reg_idx
From: Theodore Ts'o <tytso(a)mit.edu>
commit 92e75428ffc90e2a0321062379f883f3671cfebe upstream.
Linus pointed out that there is a much more efficient way of avoiding
the problem that we were trying to address in commit 9dfa7bba35ac0:
"fix race in drivers/char/random.c:get_reg()".
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Cc: Michael Schmitz <schmitzmic(a)gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/char/random.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -863,15 +863,15 @@ static void add_interrupt_bench(cycles_t
static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs)
{
__u32 *ptr = (__u32 *) regs;
- unsigned long flags;
+ unsigned int idx;
if (regs == NULL)
return 0;
- local_irq_save(flags);
- if (f->reg_idx >= sizeof(struct pt_regs) / sizeof(__u32))
- f->reg_idx = 0;
- ptr += f->reg_idx++;
- local_irq_restore(flags);
+ idx = READ_ONCE(f->reg_idx);
+ if (idx >= sizeof(struct pt_regs) / sizeof(__u32))
+ idx = 0;
+ ptr += idx++;
+ WRITE_ONCE(f->reg_idx, idx);
return *ptr;
}
Patches currently in stable-queue which might be from tytso(a)mit.edu are
queue-3.18/fix-race-in-drivers-char-random.c-get_reg.patch
queue-3.18/ext4-fix-off-by-one-on-max-nr_pages-in-ext4_find_unwritten_pgoff.patch
queue-3.18/random-use-lockless-method-of-accessing-and-updating-f-reg_idx.patch
Hi Greg,
Here is the backport of 3f29770723fe ("ipsec: check return value of
skb_to_sgvec always") for the 3.18, 4.4, and 4.9 trees, fixing the
warnings generated by 48a1df65334b ("skbuff: return -EMSGSIZE in
skb_to_sgvec to prevent overflow").
Let me know if there are any issues! First time using git send-email...
Nathan
The backport of 48a1df65334b ("skbuff: return -EMSGSIZE in skb_to_sgvec
to prevent overflow") was missing three supplemental commits:
3f29770723fe ("ipsec: check return value of skb_to_sgvec always")
89a5ea996625 ("rxrpc: check return value of skb_to_sgvec always")
e2fcad58fd23 ("virtio_net: check return value of skb_to_sgvec always")
I already sent the first one, this thread contains the other two for
3.18, 4.4, and 4.9. There is an additional patch because these trees do
not contain f6b10209b90d ("virtio-net: switch to use build_skb() for
small buffer"), which removed another call to skb_to_sgvec, which was
before f6b10209b90d. If you feel it should be squashed in f6b10209b90d,
please by all means feel free to do so. I was not 100% confident on if
the dev_kfree_skb call was necessary in the error path so I hope one of
the authors can comment on that.
Thanks!
Nathan
This is a note to let you know that I've just added the patch titled
xfrm: fix state migration copy replay sequence numbers
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
xfrm-fix-state-migration-copy-replay-sequence-numbers.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Antony Antony <antony(a)phenome.org>
Date: Fri, 19 May 2017 12:47:00 +0200
Subject: xfrm: fix state migration copy replay sequence numbers
From: Antony Antony <antony(a)phenome.org>
[ Upstream commit a486cd23661c9387fb076c3f6ae8b2aa9d20d54a ]
During xfrm migration copy replay and preplay sequence numbers
from the previous state.
Here is a tcpdump output showing the problem.
10.0.10.46 is running vanilla kernel, is the IKE/IPsec responder.
After the migration it sent wrong sequence number, reset to 1.
The migration is from 10.0.0.52 to 10.0.0.53.
IP 10.0.0.52.4500 > 10.0.10.46.4500: UDP-encap: ESP(spi=0x43ef462d,seq=0x7cf), length 136
IP 10.0.10.46.4500 > 10.0.0.52.4500: UDP-encap: ESP(spi=0xca1c282d,seq=0x7cf), length 136
IP 10.0.0.52.4500 > 10.0.10.46.4500: UDP-encap: ESP(spi=0x43ef462d,seq=0x7d0), length 136
IP 10.0.10.46.4500 > 10.0.0.52.4500: UDP-encap: ESP(spi=0xca1c282d,seq=0x7d0), length 136
IP 10.0.0.53.4500 > 10.0.10.46.4500: NONESP-encap: isakmp: child_sa inf2[I]
IP 10.0.10.46.4500 > 10.0.0.53.4500: NONESP-encap: isakmp: child_sa inf2[R]
IP 10.0.0.53.4500 > 10.0.10.46.4500: NONESP-encap: isakmp: child_sa inf2[I]
IP 10.0.10.46.4500 > 10.0.0.53.4500: NONESP-encap: isakmp: child_sa inf2[R]
IP 10.0.0.53.4500 > 10.0.10.46.4500: UDP-encap: ESP(spi=0x43ef462d,seq=0x7d1), length 136
NOTE: next sequence is wrong 0x1
IP 10.0.10.46.4500 > 10.0.0.53.4500: UDP-encap: ESP(spi=0xca1c282d,seq=0x1), length 136
IP 10.0.0.53.4500 > 10.0.10.46.4500: UDP-encap: ESP(spi=0x43ef462d,seq=0x7d2), length 136
IP 10.0.10.46.4500 > 10.0.0.53.4500: UDP-encap: ESP(spi=0xca1c282d,seq=0x2), length 136
Signed-off-by: Antony Antony <antony(a)phenome.org>
Reviewed-by: Richard Guy Briggs <rgb(a)tricolour.ca>
Signed-off-by: Steffen Klassert <steffen.klassert(a)secunet.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
net/xfrm/xfrm_state.c | 2 ++
1 file changed, 2 insertions(+)
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -1208,6 +1208,8 @@ static struct xfrm_state *xfrm_state_clo
x->curlft.add_time = orig->curlft.add_time;
x->km.state = orig->km.state;
x->km.seq = orig->km.seq;
+ x->replay = orig->replay;
+ x->preplay = orig->preplay;
return x;
Patches currently in stable-queue which might be from antony(a)phenome.org are
queue-3.18/xfrm-fix-state-migration-copy-replay-sequence-numbers.patch
This is a note to let you know that I've just added the patch titled
xen: avoid type warning in xchg_xen_ulong
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
xen-avoid-type-warning-in-xchg_xen_ulong.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Arnd Bergmann <arnd(a)arndb.de>
Date: Thu, 8 Jun 2017 10:53:10 +0200
Subject: xen: avoid type warning in xchg_xen_ulong
From: Arnd Bergmann <arnd(a)arndb.de>
[ Upstream commit 9cc91f212111cdcbefa02dcdb7dd443f224bf52c ]
The improved type-checking version of container_of() triggers a warning for
xchg_xen_ulong, pointing out that 'xen_ulong_t' is unsigned, but atomic64_t
contains a signed value:
drivers/xen/events/events_2l.c: In function 'evtchn_2l_handle_events':
drivers/xen/events/events_2l.c:187:1020: error: call to '__compiletime_assert_187' declared with attribute error: pointer type mismatch in container_of()
This adds a cast to work around the warning.
Cc: Ian Abbott <abbotti(a)mev.co.uk>
Fixes: 85323a991d40 ("xen: arm: mandate EABI and use generic atomic operations.")
Fixes: daa2ac80834d ("kernel.h: handle pointers to arrays better in container_of()")
Signed-off-by: Arnd Bergmann <arnd(a)arndb.de>
Signed-off-by: Stefano Stabellini <sstabellini(a)kernel.org>
Reviewed-by: Stefano Stabellini <sstabellini(a)kernel.org>
Acked-by: Ian Abbott <abbotti(a)mev.co.uk>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/arm/include/asm/xen/events.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm/include/asm/xen/events.h
+++ b/arch/arm/include/asm/xen/events.h
@@ -16,7 +16,7 @@ static inline int xen_irqs_disabled(stru
return raw_irqs_disabled_flags(regs->ARM_cpsr);
}
-#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((ptr), \
+#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((long long*)(ptr),\
atomic64_t, \
counter), (val))
Patches currently in stable-queue which might be from arnd(a)arndb.de are
queue-3.18/xen-avoid-type-warning-in-xchg_xen_ulong.patch
This is a note to let you know that I've just added the patch titled
x86/tsc: Provide 'tsc=unstable' boot parameter
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
x86-tsc-provide-tsc-unstable-boot-parameter.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Peter Zijlstra <peterz(a)infradead.org>
Date: Thu, 13 Apr 2017 14:56:44 +0200
Subject: x86/tsc: Provide 'tsc=unstable' boot parameter
From: Peter Zijlstra <peterz(a)infradead.org>
[ Upstream commit 8309f86cd41e8714526867177facf7a316d9be53 ]
Since the clocksource watchdog will only detect broken TSC after the
fact, all TSC based clocks will likely have observed non-continuous
values before/when switching away from TSC.
Therefore only thing to fully avoid random clock movement when your
BIOS randomly mucks with TSC values from SMI handlers is reporting the
TSC as unstable at boot.
Signed-off-by: Peter Zijlstra (Intel) <peterz(a)infradead.org>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Mike Galbraith <efault(a)gmx.de>
Cc: Peter Zijlstra <peterz(a)infradead.org>
Cc: Thomas Gleixner <tglx(a)linutronix.de>
Cc: linux-kernel(a)vger.kernel.org
Signed-off-by: Ingo Molnar <mingo(a)kernel.org>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/x86/kernel/tsc.c | 2 ++
1 file changed, 2 insertions(+)
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -356,6 +356,8 @@ static int __init tsc_setup(char *str)
tsc_clocksource_reliable = 1;
if (!strncmp(str, "noirqtime", 9))
no_sched_irq_time = 1;
+ if (!strcmp(str, "unstable"))
+ mark_tsc_unstable("boot parameter");
return 1;
}
Patches currently in stable-queue which might be from peterz(a)infradead.org are
queue-3.18/perf-core-correct-event-creation-with-perf_format_group.patch
queue-3.18/x86-tsc-provide-tsc-unstable-boot-parameter.patch
This is a note to let you know that I've just added the patch titled
wl1251: check return from call to wl1251_acx_arp_ip_filter
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
wl1251-check-return-from-call-to-wl1251_acx_arp_ip_filter.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Colin Ian King <colin.king(a)canonical.com>
Date: Tue, 26 Dec 2017 17:33:18 +0000
Subject: wl1251: check return from call to wl1251_acx_arp_ip_filter
From: Colin Ian King <colin.king(a)canonical.com>
[ Upstream commit ac1181c60822292176ab96912208ec9f9819faf8 ]
Currently the less than zero error check on ret is incorrect
as it is checking a far earlier ret assignment rather than the
return from the call to wl1251_acx_arp_ip_filter. Fix this by
adding in the missing assginment.
Detected by CoverityScan, CID#1164835 ("Logically dead code")
Fixes: 204cc5c44fb6 ("wl1251: implement hardware ARP filtering")
Signed-off-by: Colin Ian King <colin.king(a)canonical.com>
Signed-off-by: Kalle Valo <kvalo(a)codeaurora.org>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/wireless/ti/wl1251/main.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/drivers/net/wireless/ti/wl1251/main.c
+++ b/drivers/net/wireless/ti/wl1251/main.c
@@ -1200,8 +1200,7 @@ static void wl1251_op_bss_info_changed(s
WARN_ON(wl->bss_type != BSS_TYPE_STA_BSS);
enable = bss_conf->arp_addr_cnt == 1 && bss_conf->assoc;
- wl1251_acx_arp_ip_filter(wl, enable, addr);
-
+ ret = wl1251_acx_arp_ip_filter(wl, enable, addr);
if (ret < 0)
goto out_sleep;
}
Patches currently in stable-queue which might be from colin.king(a)canonical.com are
queue-3.18/wl1251-check-return-from-call-to-wl1251_acx_arp_ip_filter.patch
queue-3.18/netxen_nic-set-rcode-to-the-return-status-from-the-call-to-netxen_issue_cmd.patch
queue-3.18/btrfs-fix-incorrect-error-return-ret-being-passed-to-mapping_set_error.patch
queue-3.18/ath5k-fix-memory-leak-on-buf-on-failed-eeprom-read.patch
This is a note to let you know that I've just added the patch titled
vmxnet3: ensure that adapter is in proper state during force_close
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vmxnet3-ensure-that-adapter-is-in-proper-state-during-force_close.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Neil Horman <nhorman(a)tuxdriver.com>
Date: Fri, 12 May 2017 12:00:01 -0400
Subject: vmxnet3: ensure that adapter is in proper state during force_close
From: Neil Horman <nhorman(a)tuxdriver.com>
[ Upstream commit 1c4d5f51a812a82de97beee24f48ed05c65ebda5 ]
There are several paths in vmxnet3, where settings changes cause the
adapter to be brought down and back up (vmxnet3_set_ringparam among
them). Should part of the reset operation fail, these paths call
vmxnet3_force_close, which enables all napi instances prior to calling
dev_close (with the expectation that vmxnet3_close will then properly
disable them again). However, vmxnet3_force_close neglects to clear
VMXNET3_STATE_BIT_QUIESCED prior to calling dev_close. As a result
vmxnet3_quiesce_dev (called from vmxnet3_close), returns early, and
leaves all the napi instances in a enabled state while the device itself
is closed. If a device in this state is activated again, napi_enable
will be called on already enabled napi_instances, leading to a BUG halt.
The fix is to simply enausre that the QUIESCED bit is cleared in
vmxnet3_force_close to allow quesence to be completed properly on close.
Signed-off-by: Neil Horman <nhorman(a)tuxdriver.com>
CC: Shrikrishna Khare <skhare(a)vmware.com>
CC: "VMware, Inc." <pv-drivers(a)vmware.com>
CC: "David S. Miller" <davem(a)davemloft.net>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/vmxnet3/vmxnet3_drv.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -2648,6 +2648,11 @@ vmxnet3_force_close(struct vmxnet3_adapt
/* we need to enable NAPI, otherwise dev_close will deadlock */
for (i = 0; i < adapter->num_rx_queues; i++)
napi_enable(&adapter->rx_queue[i].napi);
+ /*
+ * Need to clear the quiesce bit to ensure that vmxnet3_close
+ * can quiesce the device properly
+ */
+ clear_bit(VMXNET3_STATE_BIT_QUIESCED, &adapter->state);
dev_close(adapter->netdev);
}
Patches currently in stable-queue which might be from nhorman(a)tuxdriver.com are
queue-3.18/vmxnet3-ensure-that-adapter-is-in-proper-state-during-force_close.patch
This is a note to let you know that I've just added the patch titled
vxlan: dont migrate permanent fdb entries during learn
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vxlan-dont-migrate-permanent-fdb-entries-during-learn.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Roopa Prabhu <roopa(a)cumulusnetworks.com>
Date: Sun, 11 Jun 2017 16:32:50 -0700
Subject: vxlan: dont migrate permanent fdb entries during learn
From: Roopa Prabhu <roopa(a)cumulusnetworks.com>
[ Upstream commit e0090a9e979de5202c7d16c635dea2f005221073 ]
This patch fixes vxlan_snoop to not move permanent fdb entries
on learn events. This is consistent with the bridge fdb
handling of permanent entries.
Fixes: 26a41ae60438 ("vxlan: only migrate dynamic FDB entries")
Signed-off-by: Roopa Prabhu <roopa(a)cumulusnetworks.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/vxlan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -985,7 +985,7 @@ static bool vxlan_snoop(struct net_devic
return false;
/* Don't migrate static entries, drop packets */
- if (f->state & NUD_NOARP)
+ if (f->state & (NUD_PERMANENT | NUD_NOARP))
return true;
if (net_ratelimit())
Patches currently in stable-queue which might be from roopa(a)cumulusnetworks.com are
queue-3.18/vxlan-dont-migrate-permanent-fdb-entries-during-learn.patch
This is a note to let you know that I've just added the patch titled
virtio_net: check return value of skb_to_sgvec always
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
virtio_net-check-return-value-of-skb_to_sgvec-always.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From e2fcad58fd230f635a74e4e983c6f4ea893642d2 Mon Sep 17 00:00:00 2001
From: "Jason A. Donenfeld" <Jason(a)zx2c4.com>
Date: Sun, 4 Jun 2017 04:16:26 +0200
Subject: virtio_net: check return value of skb_to_sgvec always
From: Jason A. Donenfeld <Jason(a)zx2c4.com>
commit e2fcad58fd230f635a74e4e983c6f4ea893642d2 upstream.
Signed-off-by: Jason A. Donenfeld <Jason(a)zx2c4.com>
Reviewed-by: Sergei Shtylyov <sergei.shtylyov(a)cogentembedded.com>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
[natechancellor: backport to 3.18]
Signed-off-by: Nathan Chancellor <natechancellor(a)gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/net/virtio_net.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -854,7 +854,7 @@ static int xmit_skb(struct send_queue *s
struct skb_vnet_hdr *hdr;
const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest;
struct virtnet_info *vi = sq->vq->vdev->priv;
- unsigned num_sg;
+ int num_sg;
unsigned hdr_len;
bool can_push;
@@ -906,11 +906,16 @@ static int xmit_skb(struct send_queue *s
if (can_push) {
__skb_push(skb, hdr_len);
num_sg = skb_to_sgvec(skb, sq->sg, 0, skb->len);
+ if (unlikely(num_sg < 0))
+ return num_sg;
/* Pull header back to avoid skew in tx bytes calculations. */
__skb_pull(skb, hdr_len);
} else {
sg_set_buf(sq->sg, hdr, hdr_len);
- num_sg = skb_to_sgvec(skb, sq->sg + 1, 0, skb->len) + 1;
+ num_sg = skb_to_sgvec(skb, sq->sg + 1, 0, skb->len);
+ if (unlikely(num_sg < 0))
+ return num_sg;
+ num_sg++;
}
return virtqueue_add_outbuf(sq->vq, sq->sg, num_sg, skb, GFP_ATOMIC);
}
Patches currently in stable-queue which might be from Jason(a)zx2c4.com are
queue-3.18/ipsec-check-return-value-of-skb_to_sgvec-always.patch
queue-3.18/skbuff-return-emsgsize-in-skb_to_sgvec-to-prevent-overflow.patch
queue-3.18/rxrpc-check-return-value-of-skb_to_sgvec-always.patch
queue-3.18/virtio_net-check-return-value-of-skb_to_sgvec-always.patch
queue-3.18/virtio_net-check-return-value-of-skb_to_sgvec-in-one-more-location.patch
This is a note to let you know that I've just added the patch titled
vfb: fix video mode and line_length being set when loaded
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
vfb-fix-video-mode-and-line_length-being-set-when-loaded.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: "Pieter \\\"PoroCYon\\\" Sluys" <pcy(a)national.shitposting.agency>
Date: Thu, 4 Jan 2018 16:53:50 +0100
Subject: vfb: fix video mode and line_length being set when loaded
From: "Pieter \\\"PoroCYon\\\" Sluys" <pcy(a)national.shitposting.agency>
[ Upstream commit 7b9faf5df0ac495a1a3d7cdb64921c179f9008ac ]
Currently, when loading the vfb module, the newly created fbdev
has a line_length of 0, and its video mode would be PSEUDOCOLOR
regardless of color depth. (The former could be worked around by
calling the FBIOPUT_VSCREENINFO ioctl with having the FBACTIVIATE_FORCE
flag set.) This patch automatically sets the line_length correctly,
and the video mode is derived from the bit depth now as well.
Thanks to Geert Uytterhoeven for confirming the bug and helping me with
the patch.
Output of `fbset -i' before the patch:
mode "1366x768-60"
# D: 72.432 MHz, H: 47.403 kHz, V: 60.004 Hz
geometry 1366 768 1366 768 32
timings 13806 120 10 14 3 32 5
rgba 8/0,8/8,8/16,8/24
endmode
Frame buffer device information:
Name : Virtual FB
Address : 0xffffaa1405d85000
Size : 4196352
Type : PACKED PIXELS
Visual : PSEUDOCOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 1
LineLength : 0 <-- note this
Accelerator : No
After:
mode "1366x768-60"
# D: 72.432 MHz, H: 47.403 kHz, V: 60.004 Hz
geometry 1366 768 1366 768 32
timings 13806 120 10 14 3 32 5
rgba 8/0,8/8,8/16,8/24
endmode
Frame buffer device information:
Name : Virtual FB
Address : 0xffffaa1405d85000
Size : 4196352
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 1
LineLength : 5464
Accelerator : No
Signed-off-by: "Pieter \"PoroCYon\" Sluys" <pcy(a)national.shitposting.agency>
Reviewed-by: Geert Uytterhoeven <geert(a)linux-m68k.org>
[b.zolnierkie: minor fixups]
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie(a)samsung.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/video/fbdev/vfb.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
--- a/drivers/video/fbdev/vfb.c
+++ b/drivers/video/fbdev/vfb.c
@@ -284,8 +284,23 @@ static int vfb_check_var(struct fb_var_s
*/
static int vfb_set_par(struct fb_info *info)
{
+ switch (info->var.bits_per_pixel) {
+ case 1:
+ info->fix.visual = FB_VISUAL_MONO01;
+ break;
+ case 8:
+ info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
+ break;
+ case 16:
+ case 24:
+ case 32:
+ info->fix.visual = FB_VISUAL_TRUECOLOR;
+ break;
+ }
+
info->fix.line_length = get_line_length(info->var.xres_virtual,
info->var.bits_per_pixel);
+
return 0;
}
@@ -526,6 +541,8 @@ static int vfb_probe(struct platform_dev
goto err2;
platform_set_drvdata(dev, info);
+ vfb_set_par(info);
+
fb_info(info, "Virtual frame buffer device, using %ldK of video memory\n",
videomemorysize >> 10);
return 0;
Patches currently in stable-queue which might be from pcy(a)national.shitposting.agency are
queue-3.18/vfb-fix-video-mode-and-line_length-being-set-when-loaded.patch
This is a note to let you know that I've just added the patch titled
USB: ene_usb6250: fix SCSI residue overwriting
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
usb-ene_usb6250-fix-scsi-residue-overwriting.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Alan Stern <stern(a)rowland.harvard.edu>
Date: Tue, 16 May 2017 11:47:52 -0400
Subject: USB: ene_usb6250: fix SCSI residue overwriting
From: Alan Stern <stern(a)rowland.harvard.edu>
[ Upstream commit aa18c4b6e0e39bfb00af48734ec24bc189ac9909 ]
In the ene_usb6250 sub-driver for usb-storage, the SCSI residue is not
reported correctly. The residue is initialized to 0, but this value
is overwritten whenever the driver sends firmware to the card reader
before performing the current command. As a result, a valid READ or
WRITE operation appears to have failed, causing the SCSI core to retry
the command multiple times and eventually fail.
This patch fixes the problem by resetting the SCSI residue to 0 after
sending firmware to the device.
Signed-off-by: Alan Stern <stern(a)rowland.harvard.edu>
Reported-and-tested-by: Andreas Hartmann <andihartmann(a)01019freenet.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/usb/storage/ene_ub6250.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/usb/storage/ene_ub6250.c
+++ b/drivers/usb/storage/ene_ub6250.c
@@ -1950,6 +1950,8 @@ static int ene_load_bincode(struct us_da
bcb->CDB[0] = 0xEF;
result = ene_send_scsi_cmd(us, FDIR_WRITE, buf, 0);
+ if (us->srb != NULL)
+ scsi_set_resid(us->srb, 0);
info->BIN_FLAG = flag;
kfree(buf);
Patches currently in stable-queue which might be from stern(a)rowland.harvard.edu are
queue-3.18/usb-ene_usb6250-fix-first-command-execution.patch
queue-3.18/usb-ene_usb6250-fix-scsi-residue-overwriting.patch
This is a note to let you know that I've just added the patch titled
USB: ene_usb6250: fix first command execution
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
usb-ene_usb6250-fix-first-command-execution.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Alan Stern <stern(a)rowland.harvard.edu>
Date: Tue, 16 May 2017 11:47:42 -0400
Subject: USB: ene_usb6250: fix first command execution
From: Alan Stern <stern(a)rowland.harvard.edu>
[ Upstream commit 4b309f1c4972c8f09e03ac64fc63510dbf5591a4 ]
In the ene_usb6250 sub-driver for usb-storage, the ene_transport()
routine is supposed to initialize the driver before executing the
current command, if the initialization has not already been performed.
However, a bug in the routine causes it to skip the command after
doing the initialization. Also, the routine does not return an
appropriate error code if either the initialization or the command
fails.
As a result of the first bug, the first command (a SCSI INQUIRY) is
not carried out. The results can be seen in the system log, in the
form of a warning message and empty or garbage INQUIRY data:
Apr 18 22:40:08 notebook2 kernel: scsi host6: scsi scan: INQUIRY result too short (5), using 36
Apr 18 22:40:08 notebook2 kernel: scsi 6:0:0:0: Direct-Access PQ: 0 ANSI: 0
This patch fixes both errors.
Signed-off-by: Alan Stern <stern(a)rowland.harvard.edu>
Reported-and-tested-by: Andreas Hartmann <andihartmann(a)01019freenet.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/usb/storage/ene_ub6250.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/drivers/usb/storage/ene_ub6250.c
+++ b/drivers/usb/storage/ene_ub6250.c
@@ -2303,21 +2303,22 @@ static int ms_scsi_irp(struct us_data *u
static int ene_transport(struct scsi_cmnd *srb, struct us_data *us)
{
- int result = 0;
+ int result = USB_STOR_XFER_GOOD;
struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
/*US_DEBUG(usb_stor_show_command(us, srb)); */
scsi_set_resid(srb, 0);
- if (unlikely(!(info->SD_Status.Ready || info->MS_Status.Ready))) {
+ if (unlikely(!(info->SD_Status.Ready || info->MS_Status.Ready)))
result = ene_init(us);
- } else {
+ if (result == USB_STOR_XFER_GOOD) {
+ result = USB_STOR_TRANSPORT_ERROR;
if (info->SD_Status.Ready)
result = sd_scsi_irp(us, srb);
if (info->MS_Status.Ready)
result = ms_scsi_irp(us, srb);
}
- return 0;
+ return result;
}
Patches currently in stable-queue which might be from stern(a)rowland.harvard.edu are
queue-3.18/usb-ene_usb6250-fix-first-command-execution.patch
queue-3.18/usb-ene_usb6250-fix-scsi-residue-overwriting.patch
This is a note to let you know that I've just added the patch titled
usb: dwc3: keystone: check return value
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
usb-dwc3-keystone-check-return-value.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Pan Bian <bianpan2016(a)163.com>
Date: Sun, 23 Apr 2017 13:55:13 +0800
Subject: usb: dwc3: keystone: check return value
From: Pan Bian <bianpan2016(a)163.com>
[ Upstream commit 018047a1dba7636e1f7fdae2cc290a528991d648 ]
Function devm_clk_get() returns an ERR_PTR when it fails. However, in
function kdwc3_probe(), its return value is not checked, which may
result in a bad memory access bug. This patch fixes the bug.
Signed-off-by: Pan Bian <bianpan2016(a)163.com>
Signed-off-by: Felipe Balbi <felipe.balbi(a)linux.intel.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/usb/dwc3/dwc3-keystone.c | 4 ++++
1 file changed, 4 insertions(+)
--- a/drivers/usb/dwc3/dwc3-keystone.c
+++ b/drivers/usb/dwc3/dwc3-keystone.c
@@ -117,6 +117,10 @@ static int kdwc3_probe(struct platform_d
dev->dma_mask = &kdwc3_dma_mask;
kdwc->clk = devm_clk_get(kdwc->dev, "usb");
+ if (IS_ERR(kdwc->clk)) {
+ dev_err(kdwc->dev, "unable to get usb clock\n");
+ return PTR_ERR(kdwc->clk);
+ }
error = clk_prepare_enable(kdwc->clk);
if (error < 0) {
Patches currently in stable-queue which might be from bianpan2016(a)163.com are
queue-3.18/cx25840-fix-unchecked-return-values.patch
queue-3.18/usb-dwc3-keystone-check-return-value.patch
This is a note to let you know that I've just added the patch titled
usb: chipidea: properly handle host or gadget initialization failure
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
usb-chipidea-properly-handle-host-or-gadget-initialization-failure.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Jisheng Zhang <jszhang(a)marvell.com>
Date: Wed, 26 Apr 2017 16:59:34 +0800
Subject: usb: chipidea: properly handle host or gadget initialization failure
From: Jisheng Zhang <jszhang(a)marvell.com>
[ Upstream commit c4a0bbbdb7f6e3c37fa6deb3ef28c5ed99da6175 ]
If ci_hdrc_host_init() or ci_hdrc_gadget_init() returns error and the
error != -ENXIO, as Peter pointed out, "it stands for initialization
for host or gadget has failed", so we'd better return failure rather
continue.
And before destroying the otg, i.e ci_hdrc_otg_destroy(ci), we should
also check ci->roles[CI_ROLE_GADGET].
Signed-off-by: Jisheng Zhang <jszhang(a)marvell.com>
Signed-off-by: Peter Chen <peter.chen(a)nxp.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/usb/chipidea/core.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -553,7 +553,7 @@ static inline void ci_role_destroy(struc
{
ci_hdrc_gadget_destroy(ci);
ci_hdrc_host_destroy(ci);
- if (ci->is_otg)
+ if (ci->is_otg && ci->roles[CI_ROLE_GADGET])
ci_hdrc_otg_destroy(ci);
}
@@ -653,20 +653,28 @@ static int ci_hdrc_probe(struct platform
/* initialize role(s) before the interrupt is requested */
if (dr_mode == USB_DR_MODE_OTG || dr_mode == USB_DR_MODE_HOST) {
ret = ci_hdrc_host_init(ci);
- if (ret)
- dev_info(dev, "doesn't support host\n");
+ if (ret) {
+ if (ret == -ENXIO)
+ dev_info(dev, "doesn't support host\n");
+ else
+ goto deinit_phy;
+ }
}
if (dr_mode == USB_DR_MODE_OTG || dr_mode == USB_DR_MODE_PERIPHERAL) {
ret = ci_hdrc_gadget_init(ci);
- if (ret)
- dev_info(dev, "doesn't support gadget\n");
+ if (ret) {
+ if (ret == -ENXIO)
+ dev_info(dev, "doesn't support gadget\n");
+ else
+ goto deinit_host;
+ }
}
if (!ci->roles[CI_ROLE_HOST] && !ci->roles[CI_ROLE_GADGET]) {
dev_err(dev, "no supported roles\n");
ret = -ENODEV;
- goto deinit_phy;
+ goto deinit_gadget;
}
if (ci->is_otg && ci->roles[CI_ROLE_GADGET]) {
@@ -676,7 +684,7 @@ static int ci_hdrc_probe(struct platform
ret = ci_hdrc_otg_init(ci);
if (ret) {
dev_err(dev, "init otg fails, ret = %d\n", ret);
- goto stop;
+ goto deinit_gadget;
}
}
@@ -727,7 +735,12 @@ static int ci_hdrc_probe(struct platform
free_irq(ci->irq, ci);
stop:
- ci_role_destroy(ci);
+ if (ci->is_otg && ci->roles[CI_ROLE_GADGET])
+ ci_hdrc_otg_destroy(ci);
+deinit_gadget:
+ ci_hdrc_gadget_destroy(ci);
+deinit_host:
+ ci_hdrc_host_destroy(ci);
deinit_phy:
usb_phy_shutdown(ci->transceiver);
Patches currently in stable-queue which might be from jszhang(a)marvell.com are
queue-3.18/usb-chipidea-properly-handle-host-or-gadget-initialization-failure.patch
This is a note to let you know that I've just added the patch titled
tty: n_gsm: Allow ADM response in addition to UA for control dlci
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
tty-n_gsm-allow-adm-response-in-addition-to-ua-for-control-dlci.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Tony Lindgren <tony(a)atomide.com>
Date: Wed, 3 Jan 2018 10:18:03 -0800
Subject: tty: n_gsm: Allow ADM response in addition to UA for control dlci
From: Tony Lindgren <tony(a)atomide.com>
[ Upstream commit ea3d8465ab9b3e01be329ac5195970a84bef76c5 ]
Some devices have the control dlci stay in ADM mode instead of the UA
mode. This can seen at least on droid 4 when trying to open the ts
27.010 mux port. Enabling n_gsm debug mode shows the control dlci
always respond with DM to SABM instead of UA:
# modprobe n_gsm debug=0xff
# ldattach -d GSM0710 /dev/ttyS0 &
gsmld_output: 00000000: f9 03 3f 01 1c f9
--> 0) C: SABM(P)
gsmld_receive: 00000000: f9 03 1f 01 36 f9
<-- 0) C: DM(P)
...
$ minicom -D /dev/gsmtty1
minicom: cannot open /dev/gsmtty1: No error information
$ strace minicom -D /dev/gsmtty1
...
open("/dev/gsmtty1", O_RDWR|O_NOCTTY|O_NONBLOCK|O_LARGEFILE) = -1 EL2HLT
Note that this is different issue from other n_gsm -EL2HLT issues such
as timeouts when the control dlci does not respond at all.
The ADM mode seems to be a quite common according to "RF Wireless World"
article "GSM Issue-UE sends SABM and gets a DM response instead of
UA response":
This issue is most commonly observed in GSM networks where in UE sends
SABM and expects network to send UA response but it ends up receiving
DM response from the network. SABM stands for Set asynchronous balanced
mode, UA stands for Unnumbered Acknowledge and DA stands for
Disconnected Mode.
An RLP entity can be in one of two modes:
- Asynchronous Balanced Mode (ABM)
- Asynchronous Disconnected Mode (ADM)
Currently Linux kernel closes the control dlci after several retries
in gsm_dlci_t1() on DM. This causes n_gsm /dev/gsmtty ports to produce
error code -EL2HLT when trying to open them as the closing of control
dlci has already set gsm->dead.
Let's fix the issue by allowing control dlci stay in ADM mode after the
retries so the /dev/gsmtty ports can be opened and used. It seems that
it might take several attempts to get any response from the control
dlci, so it's best to allow ADM mode only after the SABM retries are
done.
Note that for droid 4 additional patches are needed to mux the ttyS0
pins and to toggle RTS gpio_149 to wake up the mdm6600 modem are also
needed to use n_gsm. And the mdm6600 modem needs to be powered on.
Cc: linux-serial(a)vger.kernel.org
Cc: Alan Cox <alan(a)llwyncelyn.cymru>
Cc: Jiri Prchal <jiri.prchal(a)aksignal.cz>
Cc: Jiri Slaby <jslaby(a)suse.cz>
Cc: Marcel Partap <mpartap(a)gmx.net>
Cc: Michael Scott <michael.scott(a)linaro.org>
Cc: Peter Hurley <peter(a)hurleysoftware.com>
Cc: Russ Gorby <russ.gorby(a)intel.com>
Cc: Sascha Hauer <s.hauer(a)pengutronix.de>
Cc: Sebastian Reichel <sre(a)kernel.org>
Signed-off-by: Tony Lindgren <tony(a)atomide.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/tty/n_gsm.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -1467,6 +1467,10 @@ static void gsm_dlci_open(struct gsm_dlc
* in which case an opening port goes back to closed and a closing port
* is simply put into closed state (any further frames from the other
* end will get a DM response)
+ *
+ * Some control dlci can stay in ADM mode with other dlci working just
+ * fine. In that case we can just keep the control dlci open after the
+ * DLCI_OPENING retries time out.
*/
static void gsm_dlci_t1(unsigned long data)
@@ -1480,8 +1484,15 @@ static void gsm_dlci_t1(unsigned long da
if (dlci->retries) {
gsm_command(dlci->gsm, dlci->addr, SABM|PF);
mod_timer(&dlci->t1, jiffies + gsm->t1 * HZ / 100);
- } else
+ } else if (!dlci->addr && gsm->control == (DM | PF)) {
+ if (debug & 8)
+ pr_info("DLCI %d opening in ADM mode.\n",
+ dlci->addr);
+ gsm_dlci_open(dlci);
+ } else {
gsm_dlci_close(dlci);
+ }
+
break;
case DLCI_CLOSING:
dlci->retries--;
@@ -1499,8 +1510,8 @@ static void gsm_dlci_t1(unsigned long da
* @dlci: DLCI to open
*
* Commence opening a DLCI from the Linux side. We issue SABM messages
- * to the modem which should then reply with a UA, at which point we
- * will move into open state. Opening is done asynchronously with retry
+ * to the modem which should then reply with a UA or ADM, at which point
+ * we will move into open state. Opening is done asynchronously with retry
* running off timers and the responses.
*/
Patches currently in stable-queue which might be from tony(a)atomide.com are
queue-3.18/tty-n_gsm-allow-adm-response-in-addition-to-ua-for-control-dlci.patch
This is a note to let you know that I've just added the patch titled
tags: honor COMPILED_SOURCE with apart output directory
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
tags-honor-compiled_source-with-apart-output-directory.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Robert Jarzmik <robert.jarzmik(a)free.fr>
Date: Mon, 5 Jun 2017 13:59:15 +0200
Subject: tags: honor COMPILED_SOURCE with apart output directory
From: Robert Jarzmik <robert.jarzmik(a)free.fr>
[ Upstream commit cbf52a3e6a8a92beec6e0c70abf4111cd8f8faf7 ]
When the kernel is compiled with an "O=" argument, the object files are
not in the source tree, but in the build tree.
This patch fixes O= build by looking for object files in the build tree.
Fixes: 923e02ecf3f8 ("scripts/tags.sh: Support compiled source")
Signed-off-by: Robert Jarzmik <robert.jarzmik(a)free.fr>
Signed-off-by: Masahiro Yamada <yamada.masahiro(a)socionext.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
scripts/tags.sh | 1 +
1 file changed, 1 insertion(+)
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -106,6 +106,7 @@ all_compiled_sources()
case "$i" in
*.[cS])
j=${i/\.[cS]/\.o}
+ j="${j#$tree}"
if [ -e $j ]; then
echo $i
fi
Patches currently in stable-queue which might be from robert.jarzmik(a)free.fr are
queue-3.18/tags-honor-compiled_source-with-apart-output-directory.patch
This is a note to let you know that I've just added the patch titled
staging: wlan-ng: prism2mgmt.c: fixed a double endian conversion before calling hfa384x_drvr_setconfig16, also fixes relative sparse warning
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
staging-wlan-ng-prism2mgmt.c-fixed-a-double-endian-conversion-before-calling-hfa384x_drvr_setconfig16-also-fixes-relative-sparse-warning.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Andrea della Porta <sfaragnaus(a)gmail.com>
Date: Sat, 29 Apr 2017 07:30:23 +0100
Subject: staging: wlan-ng: prism2mgmt.c: fixed a double endian conversion before calling hfa384x_drvr_setconfig16, also fixes relative sparse warning
From: Andrea della Porta <sfaragnaus(a)gmail.com>
[ Upstream commit dea20579a69ab68cdca6adf79bb7c0c162eb9b72 ]
staging: wlan-ng: prism2mgmt.c: This patches fixes a double endian conversion.
cpu_to_le16() was called twice first in prism2mgmt_scan and again inside
hfa384x_drvr_setconfig16() for the same variable, hence it was swapped
twice. Incidentally, it also fixed the following sparse warning:
drivers/staging/wlan-ng/prism2mgmt.c:173:30: warning: incorrect type in assignment (different base types)
drivers/staging/wlan-ng/prism2mgmt.c:173:30: expected unsigned short [unsigned] [usertype] word
drivers/staging/wlan-ng/prism2mgmt.c:173:30: got restricted __le16 [usertype] <noident>
Unfortunately, only compile tested.
Signed-off-by: Andrea della Porta <sfaragnaus(a)gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
drivers/staging/wlan-ng/prism2mgmt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/staging/wlan-ng/prism2mgmt.c
+++ b/drivers/staging/wlan-ng/prism2mgmt.c
@@ -169,7 +169,7 @@ int prism2mgmt_scan(wlandevice_t *wlande
hw->ident_sta_fw.variant) >
HFA384x_FIRMWARE_VERSION(1, 5, 0)) {
if (msg->scantype.data != P80211ENUM_scantype_active)
- word = cpu_to_le16(msg->maxchanneltime.data);
+ word = msg->maxchanneltime.data;
else
word = 0;
Patches currently in stable-queue which might be from sfaragnaus(a)gmail.com are
queue-3.18/staging-wlan-ng-prism2mgmt.c-fixed-a-double-endian-conversion-before-calling-hfa384x_drvr_setconfig16-also-fixes-relative-sparse-warning.patch
This is a note to let you know that I've just added the patch titled
SMB2: Fix share type handling
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
smb2-fix-share-type-handling.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
Date: Fri, 12 May 2017 17:59:32 +0200
Subject: SMB2: Fix share type handling
From: Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
[ Upstream commit cd1230070ae1c12fd34cf6a557bfa81bf9311009 ]
In fs/cifs/smb2pdu.h, we have:
#define SMB2_SHARE_TYPE_DISK 0x01
#define SMB2_SHARE_TYPE_PIPE 0x02
#define SMB2_SHARE_TYPE_PRINT 0x03
Knowing that, with the current code, the SMB2_SHARE_TYPE_PRINT case can
never trigger and printer share would be interpreted as disk share.
So, test the ShareType value for equality instead.
Fixes: faaf946a7d5b ("CIFS: Add tree connect/disconnect capability for SMB2")
Signed-off-by: Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
Acked-by: Aurelien Aptel <aaptel(a)suse.com>
Signed-off-by: Steve French <smfrench(a)gmail.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
fs/cifs/smb2pdu.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -921,15 +921,19 @@ SMB2_tcon(const unsigned int xid, struct
goto tcon_exit;
}
- if (rsp->ShareType & SMB2_SHARE_TYPE_DISK)
+ switch (rsp->ShareType) {
+ case SMB2_SHARE_TYPE_DISK:
cifs_dbg(FYI, "connection to disk share\n");
- else if (rsp->ShareType & SMB2_SHARE_TYPE_PIPE) {
+ break;
+ case SMB2_SHARE_TYPE_PIPE:
tcon->ipc = true;
cifs_dbg(FYI, "connection to pipe share\n");
- } else if (rsp->ShareType & SMB2_SHARE_TYPE_PRINT) {
- tcon->print = true;
+ break;
+ case SMB2_SHARE_TYPE_PRINT:
+ tcon->ipc = true;
cifs_dbg(FYI, "connection to printer\n");
- } else {
+ break;
+ default:
cifs_dbg(VFS, "unknown share type %d\n", rsp->ShareType);
rc = -EOPNOTSUPP;
goto tcon_error_exit;
Patches currently in stable-queue which might be from christophe.jaillet(a)wanadoo.fr are
queue-3.18/edac-mv64x60-fix-an-error-handling-path.patch
queue-3.18/smb2-fix-share-type-handling.patch
This is a note to let you know that I've just added the patch titled
sparc64: ldc abort during vds iso boot
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
sparc64-ldc-abort-during-vds-iso-boot.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: Jag Raman <jag.raman(a)oracle.com>
Date: Fri, 9 Jun 2017 12:29:31 -0400
Subject: sparc64: ldc abort during vds iso boot
From: Jag Raman <jag.raman(a)oracle.com>
[ Upstream commit 6c95483b768c62f8ee933ae08a1bdbcb78b5410f ]
Orabug: 20902628
When an ldc control-only packet is received during data exchange in
read_nonraw(), a new rx head is calculated but the rx queue head is not
actually advanced (rx_set_head() is not called) and a branch is taken to
'no_data' at which point two things can happen depending on the value
of the newly calculated rx head and the current rx tail:
- If the rx queue is determined to be not empty, then the wrong packet
is picked up.
- If the rx queue is determined to be empty, then a read error (EAGAIN)
is eventually returned since it is falsely assumed that more data was
expected.
The fix is to update the rx head and return in case of a control only
packet during data exchange.
Signed-off-by: Jagannathan Raman <jag.raman(a)oracle.com>
Reviewed-by: Aaron Young <aaron.young(a)oracle.com>
Reviewed-by: Alexandre Chartre <alexandre.chartre(a)oracle.com>
Reviewed-by: Bijan Mottahedeh <bijan.mottahedeh(a)oracle.com>
Reviewed-by: Liam Merwick <liam.merwick(a)oracle.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/sparc/kernel/ldc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--- a/arch/sparc/kernel/ldc.c
+++ b/arch/sparc/kernel/ldc.c
@@ -1693,9 +1693,14 @@ static int read_nonraw(struct ldc_channe
lp->rcv_nxt = p->seqid;
+ /*
+ * If this is a control-only packet, there is nothing
+ * else to do but advance the rx queue since the packet
+ * was already processed above.
+ */
if (!(p->type & LDC_DATA)) {
new = rx_advance(lp, new);
- goto no_data;
+ break;
}
if (p->stype & (LDC_ACK | LDC_NACK)) {
err = data_ack_nack(lp, p);
Patches currently in stable-queue which might be from jag.raman(a)oracle.com are
queue-3.18/sparc64-ldc-abort-during-vds-iso-boot.patch
This is a note to let you know that I've just added the patch titled
skbuff: return -EMSGSIZE in skb_to_sgvec to prevent overflow
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
skbuff-return-emsgsize-in-skb_to_sgvec-to-prevent-overflow.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: "Jason A. Donenfeld" <Jason(a)zx2c4.com>
Date: Sun, 4 Jun 2017 04:16:22 +0200
Subject: skbuff: return -EMSGSIZE in skb_to_sgvec to prevent overflow
From: "Jason A. Donenfeld" <Jason(a)zx2c4.com>
[ Upstream commit 48a1df65334b74bd7531f932cca5928932abf769 ]
This is a defense-in-depth measure in response to bugs like
4d6fa57b4dab ("macsec: avoid heap overflow in skb_to_sgvec"). There's
not only a potential overflow of sglist items, but also a stack overflow
potential, so we fix this by limiting the amount of recursion this function
is allowed to do. Not actually providing a bounded base case is a future
disaster that we can easily avoid here.
As a small matter of house keeping, we take this opportunity to move the
documentation comment over the actual function the documentation is for.
While this could be implemented by using an explicit stack of skbuffs,
when implementing this, the function complexity increased considerably,
and I don't think such complexity and bloat is actually worth it. So,
instead I built this and tested it on x86, x86_64, ARM, ARM64, and MIPS,
and measured the stack usage there. I also reverted the recent MIPS
changes that give it a separate IRQ stack, so that I could experience
some worst-case situations. I found that limiting it to 24 layers deep
yielded a good stack usage with room for safety, as well as being much
deeper than any driver actually ever creates.
Signed-off-by: Jason A. Donenfeld <Jason(a)zx2c4.com>
Cc: Steffen Klassert <steffen.klassert(a)secunet.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: David Howells <dhowells(a)redhat.com>
Cc: Sabrina Dubroca <sd(a)queasysnail.net>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
include/linux/skbuff.h | 8 +++---
net/core/skbuff.c | 65 +++++++++++++++++++++++++++++++------------------
2 files changed, 46 insertions(+), 27 deletions(-)
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -845,10 +845,10 @@ struct sk_buff *skb_realloc_headroom(str
unsigned int headroom);
struct sk_buff *skb_copy_expand(const struct sk_buff *skb, int newheadroom,
int newtailroom, gfp_t priority);
-int skb_to_sgvec_nomark(struct sk_buff *skb, struct scatterlist *sg,
- int offset, int len);
-int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset,
- int len);
+int __must_check skb_to_sgvec_nomark(struct sk_buff *skb, struct scatterlist *sg,
+ int offset, int len);
+int __must_check skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg,
+ int offset, int len);
int skb_cow_data(struct sk_buff *skb, int tailbits, struct sk_buff **trailer);
int skb_pad(struct sk_buff *skb, int pad);
#define dev_kfree_skb(a) consume_skb(a)
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3285,24 +3285,18 @@ void __init skb_init(void)
NULL);
}
-/**
- * skb_to_sgvec - Fill a scatter-gather list from a socket buffer
- * @skb: Socket buffer containing the buffers to be mapped
- * @sg: The scatter-gather list to map into
- * @offset: The offset into the buffer's contents to start mapping
- * @len: Length of buffer space to be mapped
- *
- * Fill the specified scatter-gather list with mappings/pointers into a
- * region of the buffer space attached to a socket buffer.
- */
static int
-__skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len)
+__skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len,
+ unsigned int recursion_level)
{
int start = skb_headlen(skb);
int i, copy = start - offset;
struct sk_buff *frag_iter;
int elt = 0;
+ if (unlikely(recursion_level >= 24))
+ return -EMSGSIZE;
+
if (copy > 0) {
if (copy > len)
copy = len;
@@ -3321,6 +3315,8 @@ __skb_to_sgvec(struct sk_buff *skb, stru
end = start + skb_frag_size(&skb_shinfo(skb)->frags[i]);
if ((copy = end - offset) > 0) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+ if (unlikely(elt && sg_is_last(&sg[elt - 1])))
+ return -EMSGSIZE;
if (copy > len)
copy = len;
@@ -3335,16 +3331,22 @@ __skb_to_sgvec(struct sk_buff *skb, stru
}
skb_walk_frags(skb, frag_iter) {
- int end;
+ int end, ret;
WARN_ON(start > offset + len);
end = start + frag_iter->len;
if ((copy = end - offset) > 0) {
+ if (unlikely(elt && sg_is_last(&sg[elt - 1])))
+ return -EMSGSIZE;
+
if (copy > len)
copy = len;
- elt += __skb_to_sgvec(frag_iter, sg+elt, offset - start,
- copy);
+ ret = __skb_to_sgvec(frag_iter, sg+elt, offset - start,
+ copy, recursion_level + 1);
+ if (unlikely(ret < 0))
+ return ret;
+ elt += ret;
if ((len -= copy) == 0)
return elt;
offset += copy;
@@ -3355,6 +3357,31 @@ __skb_to_sgvec(struct sk_buff *skb, stru
return elt;
}
+/**
+ * skb_to_sgvec - Fill a scatter-gather list from a socket buffer
+ * @skb: Socket buffer containing the buffers to be mapped
+ * @sg: The scatter-gather list to map into
+ * @offset: The offset into the buffer's contents to start mapping
+ * @len: Length of buffer space to be mapped
+ *
+ * Fill the specified scatter-gather list with mappings/pointers into a
+ * region of the buffer space attached to a socket buffer. Returns either
+ * the number of scatterlist items used, or -EMSGSIZE if the contents
+ * could not fit.
+ */
+int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len)
+{
+ int nsg = __skb_to_sgvec(skb, sg, offset, len, 0);
+
+ if (nsg <= 0)
+ return nsg;
+
+ sg_mark_end(&sg[nsg - 1]);
+
+ return nsg;
+}
+EXPORT_SYMBOL_GPL(skb_to_sgvec);
+
/* As compared with skb_to_sgvec, skb_to_sgvec_nomark only map skb to given
* sglist without mark the sg which contain last skb data as the end.
* So the caller can mannipulate sg list as will when padding new data after
@@ -3377,19 +3404,11 @@ __skb_to_sgvec(struct sk_buff *skb, stru
int skb_to_sgvec_nomark(struct sk_buff *skb, struct scatterlist *sg,
int offset, int len)
{
- return __skb_to_sgvec(skb, sg, offset, len);
+ return __skb_to_sgvec(skb, sg, offset, len, 0);
}
EXPORT_SYMBOL_GPL(skb_to_sgvec_nomark);
-int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len)
-{
- int nsg = __skb_to_sgvec(skb, sg, offset, len);
- sg_mark_end(&sg[nsg - 1]);
-
- return nsg;
-}
-EXPORT_SYMBOL_GPL(skb_to_sgvec);
/**
* skb_cow_data - Check that a socket buffer's data buffers are writable
Patches currently in stable-queue which might be from Jason(a)zx2c4.com are
queue-3.18/ipsec-check-return-value-of-skb_to_sgvec-always.patch
queue-3.18/skbuff-return-emsgsize-in-skb_to_sgvec-to-prevent-overflow.patch
queue-3.18/rxrpc-check-return-value-of-skb_to_sgvec-always.patch
queue-3.18/virtio_net-check-return-value-of-skb_to_sgvec-always.patch
queue-3.18/virtio_net-check-return-value-of-skb_to_sgvec-in-one-more-location.patch
This is a note to let you know that I've just added the patch titled
signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Sat, 19 Aug 2017 15:26:01 -0500
Subject: signal/powerpc: Document conflicts with SI_USER and SIGFPE and SIGTRAP
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit cf4674c46c66e45f238f8f7e81af2a444b970c0a ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
that uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME and TRAP_FIXME, siginfo_layout() will now return
SIL_FAULT and the appropriate fields will be reliably copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: Paul Mackerras <paulus(a)samba.org>
Cc: Kumar Gala <kumar.gala(a)freescale.com>
Cc: Michael Ellerman <mpe(a)ellerman.id.au>
Cc: Benjamin Herrenschmidt <benh(a)kernel.crashing.org>
Cc: linuxppc-dev(a)lists.ozlabs.org
Ref: 9bad068c24d7 ("[PATCH] ppc32: support for e500 and 85xx")
Ref: 0ed70f6105ef ("PPC32: Provide proper siginfo information on various exceptions.")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/powerpc/include/uapi/asm/siginfo.h | 15 +++++++++++++++
arch/powerpc/kernel/traps.c | 10 +++++-----
2 files changed, 20 insertions(+), 5 deletions(-)
--- a/arch/powerpc/include/uapi/asm/siginfo.h
+++ b/arch/powerpc/include/uapi/asm/siginfo.h
@@ -17,4 +17,19 @@
#undef NSIGTRAP
#define NSIGTRAP 4
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+/*
+ * SIGTRAP si_codes
+ */
+#ifdef __KERNEL__
+#define TRAP_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
+
#endif /* _ASM_POWERPC_SIGINFO_H */
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -769,7 +769,7 @@ void unknown_exception(struct pt_regs *r
printk("Bad trap at PC: %lx, SR: %lx, vector=%lx\n",
regs->nip, regs->msr, regs->trap);
- _exception(SIGTRAP, regs, 0, 0);
+ _exception(SIGTRAP, regs, TRAP_FIXME, 0);
exception_exit(prev_state);
}
@@ -791,7 +791,7 @@ bail:
void RunModeException(struct pt_regs *regs)
{
- _exception(SIGTRAP, regs, 0, 0);
+ _exception(SIGTRAP, regs, TRAP_FIXME, 0);
}
void __kprobes single_step_exception(struct pt_regs *regs)
@@ -826,7 +826,7 @@ static void emulate_single_step(struct p
static inline int __parse_fpscr(unsigned long fpscr)
{
- int ret = 0;
+ int ret = FPE_FIXME;
/* Invalid operation */
if ((fpscr & FPSCR_VE) && (fpscr & FPSCR_VX))
@@ -1742,7 +1742,7 @@ void SPEFloatingPointException(struct pt
extern int do_spe_mathemu(struct pt_regs *regs);
unsigned long spefscr;
int fpexc_mode;
- int code = 0;
+ int code = FPE_FIXME;
int err;
flush_spe_to_thread(current);
@@ -1811,7 +1811,7 @@ void SPEFloatingPointRoundException(stru
printk(KERN_ERR "unrecognized spe instruction "
"in %s at %lx\n", current->comm, regs->nip);
} else {
- _exception(SIGFPE, regs, 0, regs->nip);
+ _exception(SIGFPE, regs, FPE_FIXME, regs->nip);
return;
}
}
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-3.18/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-3.18/pidns-disable-pid-allocation-if-pid_ns_prepare_proc-is-failed-in-alloc_pid.patch
queue-3.18/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-3.18/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch
This is a note to let you know that I've just added the patch titled
signal/metag: Document a conflict with SI_USER with SIGFPE
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
The filename of the patch is:
signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable(a)vger.kernel.org> know about it.
>From foo@baz Tue Apr 10 13:58:07 CEST 2018
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Date: Tue, 1 Aug 2017 10:37:40 -0500
Subject: signal/metag: Document a conflict with SI_USER with SIGFPE
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
[ Upstream commit b80328be53c215346b153769267b38f531d89b4f ]
Setting si_code to 0 results in a userspace seeing an si_code of 0.
This is the same si_code as SI_USER. Posix and common sense requires
that SI_USER not be a signal specific si_code. As such this use of 0
for the si_code is a pretty horribly broken ABI.
Further use of si_code == 0 guaranteed that copy_siginfo_to_user saw a
value of __SI_KILL and now sees a value of SIL_KILL with the result
hat uid and pid fields are copied and which might copying the si_addr
field by accident but certainly not by design. Making this a very
flakey implementation.
Utilizing FPE_FIXME siginfo_layout will now return SIL_FAULT and the
appropriate fields will reliably be copied.
Possible ABI fixes includee:
- Send the signal without siginfo
- Don't generate a signal
- Possibly assign and use an appropriate si_code
- Don't handle cases which can't happen
Cc: James Hogan <james.hogan(a)imgtec.com>
Cc: linux-metag(a)vger.kernel.org
Ref: ac919f0883e5 ("metag: Traps")
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
arch/metag/include/uapi/asm/siginfo.h | 7 +++++++
arch/metag/kernel/traps.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
--- a/arch/metag/include/uapi/asm/siginfo.h
+++ b/arch/metag/include/uapi/asm/siginfo.h
@@ -5,4 +5,11 @@
#include <asm-generic/siginfo.h>
+/*
+ * SIGFPE si_codes
+ */
+#ifdef __KERNEL__
+#define FPE_FIXME 0 /* Broken dup of SI_USER */
+#endif /* __KERNEL__ */
+
#endif
--- a/arch/metag/kernel/traps.c
+++ b/arch/metag/kernel/traps.c
@@ -732,7 +732,7 @@ TBIRES fpe_handler(TBIRES State, int Sig
else if (error_state & TXSTAT_FPE_INEXACT_BIT)
info.si_code = FPE_FLTRES;
else
- info.si_code = 0;
+ info.si_code = FPE_FIXME;
info.si_errno = 0;
info.si_addr = (__force void __user *)regs->ctx.CurrPC;
force_sig_info(SIGFPE, &info, current);
Patches currently in stable-queue which might be from ebiederm(a)xmission.com are
queue-3.18/signal-metag-document-a-conflict-with-si_user-with-sigfpe.patch
queue-3.18/pidns-disable-pid-allocation-if-pid_ns_prepare_proc-is-failed-in-alloc_pid.patch
queue-3.18/signal-arm-document-conflicts-with-si_user-and-sigfpe.patch
queue-3.18/signal-powerpc-document-conflicts-with-si_user-and-sigfpe-and-sigtrap.patch