summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThorsten Leemhuis <fedora@leemhuis.info>2016-03-10 07:15:53 +0100
committerThorsten Leemhuis <fedora@leemhuis.info>2016-03-10 07:15:53 +0100
commit27ef1cd8b19d126cd6605dae4c9862515269bf6e (patch)
tree278c19b83b44e5f5552117138238d3698b2fe1f6
parentdd90e0aaca71357e4a65af1f6f3cac20d065cacf (diff)
parent5c8c54fd0645732082f1936e4e22cdda25158fb0 (diff)
downloadkernel-4.5.0-0.rc7.git2.1.vanilla.knurd.1.fc24.tar.gz
kernel-4.5.0-0.rc7.git2.1.vanilla.knurd.1.fc24.tar.xz
kernel-4.5.0-0.rc7.git2.1.vanilla.knurd.1.fc24.zip
Merge remote-tracking branch 'origin/master' into f24-user-thl-vanilla-rawhidekernel-4.5.0-0.rc7.git2.1.vanilla.knurd.1.fc24
-rw-r--r--cfg80211-wext-fix-message-ordering.patch83
-rw-r--r--config-generic23
-rw-r--r--config-nodebug114
-rw-r--r--config-x86-generic15
-rw-r--r--gitrev2
-rw-r--r--kernel.spec38
-rw-r--r--sources1
-rw-r--r--wext-fix-message-delay-ordering.patch122
8 files changed, 101 insertions, 297 deletions
diff --git a/cfg80211-wext-fix-message-ordering.patch b/cfg80211-wext-fix-message-ordering.patch
deleted file mode 100644
index 8d3cdfdda..000000000
--- a/cfg80211-wext-fix-message-ordering.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From cb150b9d23be6ee7f3a0fff29784f1c5b5ac514d Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg@intel.com>
-Date: Wed, 27 Jan 2016 13:29:34 +0100
-Subject: cfg80211/wext: fix message ordering
-
-Since cfg80211 frequently takes actions from its netdev notifier
-call, wireless extensions messages could still be ordered badly
-since the wext netdev notifier, since wext is built into the
-kernel, runs before the cfg80211 netdev notifier. For example,
-the following can happen:
-
-5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default
- link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
-5: wlan1: <BROADCAST,MULTICAST,UP>
- link/ether
-
-when setting the interface down causes the wext message.
-
-To also fix this, export the wireless_nlevent_flush() function
-and also call it from the cfg80211 notifier.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
- include/net/iw_handler.h | 6 ++++++
- net/wireless/core.c | 2 ++
- net/wireless/wext-core.c | 3 ++-
- 3 files changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/include/net/iw_handler.h b/include/net/iw_handler.h
-index 8f81bbb..e0f4109 100644
---- a/include/net/iw_handler.h
-+++ b/include/net/iw_handler.h
-@@ -439,6 +439,12 @@ int dev_get_wireless_info(char *buffer, char **start, off_t offset, int length);
- /* Send a single event to user space */
- void wireless_send_event(struct net_device *dev, unsigned int cmd,
- union iwreq_data *wrqu, const char *extra);
-+#ifdef CONFIG_WEXT_CORE
-+/* flush all previous wext events - if work is done from netdev notifiers */
-+void wireless_nlevent_flush(void);
-+#else
-+static inline void wireless_nlevent_flush(void) {}
-+#endif
-
- /* We may need a function to send a stream of events to user space.
- * More on that later... */
-diff --git a/net/wireless/core.c b/net/wireless/core.c
-index b091551..8f0bac7 100644
---- a/net/wireless/core.c
-+++ b/net/wireless/core.c
-@@ -1147,6 +1147,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
- return NOTIFY_DONE;
- }
-
-+ wireless_nlevent_flush();
-+
- return NOTIFY_OK;
- }
-
-diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
-index 87dd619..b50ee5d 100644
---- a/net/wireless/wext-core.c
-+++ b/net/wireless/wext-core.c
-@@ -342,7 +342,7 @@ static const int compat_event_type_size[] = {
-
- /* IW event code */
-
--static void wireless_nlevent_flush(void)
-+void wireless_nlevent_flush(void)
- {
- struct sk_buff *skb;
- struct net *net;
-@@ -355,6 +355,7 @@ static void wireless_nlevent_flush(void)
- GFP_KERNEL);
- }
- }
-+EXPORT_SYMBOL_GPL(wireless_nlevent_flush);
-
- static int wext_netdev_notifier_call(struct notifier_block *nb,
- unsigned long state, void *ptr)
---
-cgit v0.12
-
diff --git a/config-generic b/config-generic
index 1300bd015..0e8f19219 100644
--- a/config-generic
+++ b/config-generic
@@ -1825,13 +1825,13 @@ CONFIG_B43_PCMCIA=y
CONFIG_B43_SDIO=y
CONFIG_B43_BCMA=y
CONFIG_B43_BCMA_PIO=y
-# CONFIG_B43_DEBUG is not set
+CONFIG_B43_DEBUG=y
CONFIG_B43_PHY_LP=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_HT=y
CONFIG_B43_PHY_G=y
CONFIG_B43LEGACY=m
-# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DEBUG=y
CONFIG_B43LEGACY_DMA=y
CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
@@ -5132,7 +5132,7 @@ CONFIG_PM_DEBUG=y
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_PM_TRACE=y
CONFIG_PM_TRACE_RTC=y
-# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_PM_TEST_SUSPEND=y
# CONFIG_PM_OPP is not set
# CONFIG_PM_AUTOSLEEP is not set
# CONFIG_PM_WAKELOCKS is not set
@@ -5855,11 +5855,22 @@ CONFIG_POWERCAP=y
# CONFIG_CPUFREQ_DT is not set
-# CONFIG_MODULE_SIG is not set
+CONFIG_MODULE_SIG=y
+CONFIG_MODULE_SIG_ALL=y
+# CONFIG_MODULE_SIG_SHA1 is not set
+CONFIG_MODULE_SIG_SHA256=y
+# CONFIG_MODULE_SIG_FORCE is not set
+CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+CONFIG_SIGNED_PE_FILE_VERIFICATION=y
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_BLACKLIST_KEYRING=y
+# CONFIG_MODULE_SIG_UEFI is not set
+# CONFIG_EFI_SIGNATURE_LIST_PARSER is not set
# FIXME: Revisit this to see if we can use it instead of the spec file stuff
# CONFIG_MODULE_COMPRESS is not set
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
-# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
# CONFIG_RTC_DRV_EFI is not set
# CONFIG_NET_XGENE is not set
diff --git a/config-nodebug b/config-nodebug
index c173637a2..3a2eee381 100644
--- a/config-nodebug
+++ b/config-nodebug
@@ -2,101 +2,101 @@ CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
CONFIG_SND_PCM_XRUN_DEBUG=y
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_LOCK_TORTURE_TEST is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_PROVE_RCU is not set
+CONFIG_DEBUG_ATOMIC_SLEEP=y
+
+CONFIG_DEBUG_MUTEXES=y
+CONFIG_DEBUG_RT_MUTEXES=y
+CONFIG_DEBUG_LOCK_ALLOC=y
+CONFIG_LOCK_TORTURE_TEST=m
+CONFIG_PROVE_LOCKING=y
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_PROVE_RCU=y
# CONFIG_PROVE_RCU_REPEATEDLY is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
+CONFIG_DEBUG_PER_CPU_MAPS=y
CONFIG_CPUMASK_OFFSTACK=y
-# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
+CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_FAILSLAB is not set
-# CONFIG_FAIL_PAGE_ALLOC is not set
-# CONFIG_FAIL_MAKE_REQUEST is not set
-# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
-# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
-# CONFIG_FAIL_IO_TIMEOUT is not set
-# CONFIG_FAIL_MMC_REQUEST is not set
+CONFIG_FAULT_INJECTION=y
+CONFIG_FAILSLAB=y
+CONFIG_FAIL_PAGE_ALLOC=y
+CONFIG_FAIL_MAKE_REQUEST=y
+CONFIG_FAULT_INJECTION_DEBUG_FS=y
+CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
+CONFIG_FAIL_IO_TIMEOUT=y
+CONFIG_FAIL_MMC_REQUEST=y
-# CONFIG_LOCK_STAT is not set
+CONFIG_LOCK_STAT=y
-# CONFIG_DEBUG_STACK_USAGE is not set
+CONFIG_DEBUG_STACK_USAGE=y
-# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_DEBUG=y
# CONFIG_ACPI_DEBUGGER is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_PI_LIST is not set
+CONFIG_DEBUG_SG=y
+CONFIG_DEBUG_PI_LIST=y
# CONFIG_PAGE_EXTENSION is not set
# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_PAGEALLOC is not set
-# CONFIG_DEBUG_OBJECTS is not set
+CONFIG_DEBUG_OBJECTS=y
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
-# CONFIG_DEBUG_OBJECTS_FREE is not set
-# CONFIG_DEBUG_OBJECTS_TIMERS is not set
-# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set
+CONFIG_DEBUG_OBJECTS_FREE=y
+CONFIG_DEBUG_OBJECTS_TIMERS=y
+CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_X86_PTDUMP=y
-# CONFIG_ARM64_PTDUMP is not set
-# CONFIG_EFI_PGT_DUMP is not set
+CONFIG_ARM64_PTDUMP=y
+CONFIG_EFI_PGT_DUMP=y
-# CONFIG_CAN_DEBUG_DEVICES is not set
+CONFIG_CAN_DEBUG_DEVICES=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_DEBUG_NOTIFIERS is not set
+CONFIG_DEBUG_NOTIFIERS=y
-# CONFIG_DMA_API_DEBUG is not set
+CONFIG_DMA_API_DEBUG=y
-# CONFIG_MMIOTRACE is not set
+CONFIG_MMIOTRACE=y
-# CONFIG_DEBUG_CREDENTIALS is not set
+CONFIG_DEBUG_CREDENTIALS=y
# off in both production debug and nodebug builds,
# on in rawhide nodebug builds
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
-# CONFIG_EXT4_DEBUG is not set
+CONFIG_EXT4_DEBUG=y
# CONFIG_XFS_WARN is not set
-# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_DEBUG_PERF_USE_VMALLOC=y
-# CONFIG_JBD2_DEBUG is not set
+CONFIG_JBD2_DEBUG=y
-# CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_NFSD_FAULT_INJECTION=y
-# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_DEBUG_BLK_CGROUP=y
-# CONFIG_DRBD_FAULT_INJECTION is not set
+CONFIG_DRBD_FAULT_INJECTION=y
-# CONFIG_ATH_DEBUG is not set
-# CONFIG_CARL9170_DEBUGFS is not set
-# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_ATH_DEBUG=y
+CONFIG_CARL9170_DEBUGFS=y
+CONFIG_IWLWIFI_DEVICE_TRACING=y
# CONFIG_RTLWIFI_DEBUG is not set
-# CONFIG_DEBUG_OBJECTS_WORK is not set
+CONFIG_DEBUG_OBJECTS_WORK=y
-# CONFIG_DMADEVICES_DEBUG is not set
+CONFIG_DMADEVICES_DEBUG=y
# CONFIG_DMADEVICES_VDEBUG is not set
CONFIG_PM_ADVANCED_DEBUG=y
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_QUOTA_DEBUG is not set
+CONFIG_CEPH_LIB_PRETTYDEBUG=y
+CONFIG_QUOTA_DEBUG=y
CONFIG_KGDB_KDB=y
@@ -104,19 +104,19 @@ CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
-# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
+CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
# CONFIG_PERCPU_TEST is not set
-# CONFIG_TEST_LIST_SORT is not set
+CONFIG_TEST_LIST_SORT=y
# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_DETECT_HUNG_TASK is not set
+CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-# CONFIG_WQ_WATCHDOG is not set
+CONFIG_WQ_WATCHDOG=y
-# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
+CONFIG_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
@@ -127,4 +127,4 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
# CONFIG_SPI_DEBUG is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
+CONFIG_X86_DEBUG_STATIC_CPU_HAS=y
diff --git a/config-x86-generic b/config-x86-generic
index f54836a6d..4815913be 100644
--- a/config-x86-generic
+++ b/config-x86-generic
@@ -377,7 +377,7 @@ CONFIG_SP5100_TCO=m
# CONFIG_MEMTEST is not set
# CONFIG_DEBUG_TLBFLUSH is not set
-# CONFIG_MAXSMP is not set
+CONFIG_MAXSMP=y
CONFIG_HP_ILO=m
@@ -583,18 +583,7 @@ CONFIG_MOUSE_PS2_VMMOUSE=y
CONFIG_XZ_DEC_X86=y
CONFIG_MPILIB=y
-CONFIG_PKCS7_MESSAGE_PARSER=y
-# CONFIG_PKCS7_TEST_KEY is not set
-CONFIG_SIGNED_PE_FILE_VERIFICATION=y
-CONFIG_SYSTEM_TRUSTED_KEYRING=y
-CONFIG_SYSTEM_BLACKLIST_KEYRING=y
-CONFIG_MODULE_SIG=y
-CONFIG_MODULE_SIG_ALL=y
-# CONFIG_MODULE_SIG_SHA1 is not set
-CONFIG_MODULE_SIG_SHA256=y
-# CONFIG_MODULE_SIG_FORCE is not set
-CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
-CONFIG_SYSTEM_TRUSTED_KEYS=""
+
CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE=y
CONFIG_EFI_SIGNATURE_LIST_PARSER=y
diff --git a/gitrev b/gitrev
index fa461aace..fe30586f1 100644
--- a/gitrev
+++ b/gitrev
@@ -1 +1 @@
-f6cede5b49e822ebc41a099fe41ab4989f64e2cb
+7f02bf6b5f5de90b7a331759b5364e41c0f39bf9
diff --git a/kernel.spec b/kernel.spec
index 51d5afcff..fb7463a7f 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -11,10 +11,12 @@ Summary: The Linux kernel
# Sign modules on x86. Make sure the config files match this setting if more
# architectures are added.
%ifarch %{ix86} x86_64
+%global signkernel 1
%global signmodules 1
%global zipmodules 1
%else
-%global signmodules 0
+%global signkernel 0
+%global signmodules 1
%global zipmodules 0
%endif
@@ -42,7 +44,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
-%global baserelease 2
+%global baserelease 1
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@@ -75,7 +77,7 @@ Summary: The Linux kernel
# The rc snapshot level
%define rcrev 7
# The git snapshot level
-%define gitrev 0
+%define gitrev 2
# Set rpm version accordingly
%define rpmversion 4.%{upstream_sublevel}.0
%endif
@@ -131,7 +133,7 @@ Summary: The Linux kernel
# Set debugbuildsenabled to 1 for production (build separate debug kernels)
# and 0 for rawhide (all kernels are debug kernels).
# See also 'make debug' and 'make release'.
-%define debugbuildsenabled 1
+%define debugbuildsenabled 0
# Want to build a vanilla kernel build without any non-upstream patches?
%define with_vanilla %{?_without_vanilla: 0} %{?!_without_vanilla: 1}
@@ -404,14 +406,12 @@ BuildRequires: rpm-build, elfutils
%define debuginfo_args --strict-build-id -r
%endif
-%ifarch %{ix86} x86_64
-# MODULE_SIG is enabled in config-x86-generic and needs these:
+%if %{signkernel}%{signmodules}
BuildRequires: openssl openssl-devel
-%endif
-
-%if %{signmodules}
+%if %{signkernel}
BuildRequires: pesign >= 0.10-4
%endif
+%endif
%if %{with_cross}
BuildRequires: binutils-%{_build_arch}-linux-gnu, gcc-%{_build_arch}-linux-gnu
@@ -621,10 +621,6 @@ Patch621: drm-udl-Use-unlocked-gem-unreferencing.patch
#Required for some persistent memory options
Patch641: disable-CONFIG_EXPERT-for-ZONE_DMA.patch
-#rhbz 1302037
-Patch644: wext-fix-message-delay-ordering.patch
-Patch645: cfg80211-wext-fix-message-ordering.patch
-
#rhbz 1255325
Patch646: HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch
@@ -1355,7 +1351,7 @@ BuildKernel() {
make -s mrproper
cp configs/$Config .config
- %if %{signmodules}
+ %if %{signkernel}%{signmodules}
cp %{SOURCE11} certs/.
%endif
@@ -1392,7 +1388,7 @@ BuildKernel() {
cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/lib/modules/$KernelVer/zImage.stub-$KernelVer || :
fi
- %if %{signmodules}
+ %if %{signkernel}
# Sign the image if we're using EFI
%pesign -s -i $KernelImage -o vmlinuz.signed
if [ ! -s vmlinuz.signed ]; then
@@ -2158,6 +2154,18 @@ fi
#
#
%changelog
+* Wed Mar 09 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.5.0-0.rc7.git2.1
+- Linux v4.5-rc7-159-g7f02bf6
+
+* Tue Mar 08 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.5.0-0.rc7.git1.1
+- Linux v4.5-rc7-116-ge2857b8
+- Reenable debugging options.
+
+* Tue Mar 08 2016 Thorsten Leemhuis <fedora@leemhuis.info>
+- add signkernel macro to make signing kernel and signing modules
+ independent from each other
+- sign modules on all archs
+
* Mon Mar 7 2016 Peter Robinson <pbrobinson@fedoraproject.org> 4.5.0-0.rc7.git0.2
- Disble ARM_PATCH_IDIV as a work around to fix rhbz 1303147
diff --git a/sources b/sources
index de62ecac0..0695297d3 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,4 @@
9a78fa2eb6c68ca5a40ed5af08142599 linux-4.4.tar.xz
dcbc8fe378a676d5d0dd208cf524e144 perf-man-4.4.tar.gz
78a23c8a117f99bbe8f45bdd0183cf18 patch-4.5-rc7.xz
+6fb09377dd2cd1acddc7f23dadbfafa5 patch-4.5-rc7-git2.xz
diff --git a/wext-fix-message-delay-ordering.patch b/wext-fix-message-delay-ordering.patch
deleted file mode 100644
index 109b68da3..000000000
--- a/wext-fix-message-delay-ordering.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 8bf862739a7786ae72409220914df960a0aa80d8 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg@intel.com>
-Date: Wed, 27 Jan 2016 12:37:52 +0100
-Subject: wext: fix message delay/ordering
-
-Beniamino reported that he was getting an RTM_NEWLINK message for a
-given interface, after the RTM_DELLINK for it. It turns out that the
-message is a wireless extensions message, which was sent because the
-interface had been connected and disconnection while it was deleted
-caused a wext message.
-
-For its netlink messages, wext uses RTM_NEWLINK, but the message is
-without all the regular rtnetlink attributes, so "ip monitor link"
-prints just rudimentary information:
-
-5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default
- link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
-Deleted 5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
- link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
-5: wlan1: <BROADCAST,MULTICAST,UP>
- link/ether
-(from my hwsim reproduction)
-
-This can cause userspace to get confused since it doesn't expect an
-RTM_NEWLINK message after RTM_DELLINK.
-
-The reason for this is that wext schedules a worker to send out the
-messages, and the scheduling delay can cause the messages to get out
-to userspace in different order.
-
-To fix this, have wext register a netdevice notifier and flush out
-any pending messages when netdevice state changes. This fixes any
-ordering whenever the original message wasn't sent by a notifier
-itself.
-
-Cc: stable@vger.kernel.org
-Reported-by: Beniamino Galvani <bgalvani@redhat.com>
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
- net/wireless/wext-core.c | 51 +++++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 40 insertions(+), 11 deletions(-)
-
-diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
-index c8717c1..87dd619 100644
---- a/net/wireless/wext-core.c
-+++ b/net/wireless/wext-core.c
-@@ -342,6 +342,39 @@ static const int compat_event_type_size[] = {
-
- /* IW event code */
-
-+static void wireless_nlevent_flush(void)
-+{
-+ struct sk_buff *skb;
-+ struct net *net;
-+
-+ ASSERT_RTNL();
-+
-+ for_each_net(net) {
-+ while ((skb = skb_dequeue(&net->wext_nlevents)))
-+ rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL,
-+ GFP_KERNEL);
-+ }
-+}
-+
-+static int wext_netdev_notifier_call(struct notifier_block *nb,
-+ unsigned long state, void *ptr)
-+{
-+ /*
-+ * When a netdev changes state in any way, flush all pending messages
-+ * to avoid them going out in a strange order, e.g. RTM_NEWLINK after
-+ * RTM_DELLINK, or with IFF_UP after without IFF_UP during dev_close()
-+ * or similar - all of which could otherwise happen due to delays from
-+ * schedule_work().
-+ */
-+ wireless_nlevent_flush();
-+
-+ return NOTIFY_OK;
-+}
-+
-+static struct notifier_block wext_netdev_notifier = {
-+ .notifier_call = wext_netdev_notifier_call,
-+};
-+
- static int __net_init wext_pernet_init(struct net *net)
- {
- skb_queue_head_init(&net->wext_nlevents);
-@@ -360,7 +393,12 @@ static struct pernet_operations wext_pernet_ops = {
-
- static int __init wireless_nlevent_init(void)
- {
-- return register_pernet_subsys(&wext_pernet_ops);
-+ int err = register_pernet_subsys(&wext_pernet_ops);
-+
-+ if (err)
-+ return err;
-+
-+ return register_netdevice_notifier(&wext_netdev_notifier);
- }
-
- subsys_initcall(wireless_nlevent_init);
-@@ -368,17 +406,8 @@ subsys_initcall(wireless_nlevent_init);
- /* Process events generated by the wireless layer or the driver. */
- static void wireless_nlevent_process(struct work_struct *work)
- {
-- struct sk_buff *skb;
-- struct net *net;
--
- rtnl_lock();
--
-- for_each_net(net) {
-- while ((skb = skb_dequeue(&net->wext_nlevents)))
-- rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL,
-- GFP_KERNEL);
-- }
--
-+ wireless_nlevent_flush();
- rtnl_unlock();
- }
-
---
-cgit v0.12
-