Subject: [PATCH] kcov: Remove kcov include from sched.h and move it to its users.

The recent addition of in_serving_softirq() to kconv.h results in
compile failure on PREEMPT_RT because it requires
task_struct::softirq_disable_cnt. This is not available if kconv.h is
included from sched.h.

It is not needed to include kconv.h from sched.h. All but the net/ user
already include the kconv header file.

Move the include of the kconv.h header from sched.h it its users.
Additionally include sched.h from kconv.h to ensure that everything
task_struct related is available.

Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
---
include/linux/kcov.h | 1 +
include/linux/sched.h | 1 -
net/core/skbuff.c | 1 +
net/mac80211/iface.c | 1 +
net/mac80211/rx.c | 1 +
5 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/linux/kcov.h b/include/linux/kcov.h
index 4e3037dc12048..55dc338f6bcdd 100644
--- a/include/linux/kcov.h
+++ b/include/linux/kcov.h
@@ -2,6 +2,7 @@
#ifndef _LINUX_KCOV_H
#define _LINUX_KCOV_H

+#include <linux/sched.h>
#include <uapi/linux/kcov.h>

struct task_struct;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 7337630326751..183e9d90841cb 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -14,7 +14,6 @@
#include <linux/pid.h>
#include <linux/sem.h>
#include <linux/shm.h>
-#include <linux/kcov.h>
#include <linux/mutex.h>
#include <linux/plist.h>
#include <linux/hrtimer.h>
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 785daff48030d..e64d0a2e21c31 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -60,6 +60,7 @@
#include <linux/prefetch.h>
#include <linux/if_vlan.h>
#include <linux/mpls.h>
+#include <linux/kcov.h>

#include <net/protocol.h>
#include <net/dst.h>
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index b31417f40bd56..39943c33abbfa 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -15,6 +15,7 @@
#include <linux/if_arp.h>
#include <linux/netdevice.h>
#include <linux/rtnetlink.h>
+#include <linux/kcov.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>
#include "ieee80211_i.h"
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 972895e9f22dc..3527b17f235a8 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -17,6 +17,7 @@
#include <linux/etherdevice.h>
#include <linux/rcupdate.h>
#include <linux/export.h>
+#include <linux/kcov.h>
#include <linux/bitops.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>
--
2.30.0


2021-02-18 19:20:05

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] kcov: Remove kcov include from sched.h and move it to its users.

On Thu, 2021-02-18 at 18:31 +0100, Sebastian Andrzej Siewior wrote:
> The recent addition of in_serving_softirq() to kconv.h results in

You typo'ed "kconv.h" pretty consistently ;-)

But yes, that makes sense.

Acked-by: Johannes Berg <[email protected]>

johannes


2021-02-18 19:34:54

by Andrey Konovalov

[permalink] [raw]
Subject: Re: [PATCH] kcov: Remove kcov include from sched.h and move it to its users.

On Thu, Feb 18, 2021 at 6:31 PM Sebastian Andrzej Siewior
<[email protected]> wrote:
>
> The recent addition of in_serving_softirq() to kconv.h results in
> compile failure on PREEMPT_RT because it requires
> task_struct::softirq_disable_cnt. This is not available if kconv.h is
> included from sched.h.
>
> It is not needed to include kconv.h from sched.h. All but the net/ user
> already include the kconv header file.
>
> Move the include of the kconv.h header from sched.h it its users.
> Additionally include sched.h from kconv.h to ensure that everything
> task_struct related is available.
>
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
> ---
> include/linux/kcov.h | 1 +
> include/linux/sched.h | 1 -
> net/core/skbuff.c | 1 +
> net/mac80211/iface.c | 1 +
> net/mac80211/rx.c | 1 +
> 5 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/kcov.h b/include/linux/kcov.h
> index 4e3037dc12048..55dc338f6bcdd 100644
> --- a/include/linux/kcov.h
> +++ b/include/linux/kcov.h
> @@ -2,6 +2,7 @@
> #ifndef _LINUX_KCOV_H
> #define _LINUX_KCOV_H
>
> +#include <linux/sched.h>
> #include <uapi/linux/kcov.h>
>
> struct task_struct;
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 7337630326751..183e9d90841cb 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -14,7 +14,6 @@
> #include <linux/pid.h>
> #include <linux/sem.h>
> #include <linux/shm.h>
> -#include <linux/kcov.h>
> #include <linux/mutex.h>
> #include <linux/plist.h>
> #include <linux/hrtimer.h>
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index 785daff48030d..e64d0a2e21c31 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> @@ -60,6 +60,7 @@
> #include <linux/prefetch.h>
> #include <linux/if_vlan.h>
> #include <linux/mpls.h>
> +#include <linux/kcov.h>
>
> #include <net/protocol.h>
> #include <net/dst.h>
> diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
> index b31417f40bd56..39943c33abbfa 100644
> --- a/net/mac80211/iface.c
> +++ b/net/mac80211/iface.c
> @@ -15,6 +15,7 @@
> #include <linux/if_arp.h>
> #include <linux/netdevice.h>
> #include <linux/rtnetlink.h>
> +#include <linux/kcov.h>
> #include <net/mac80211.h>
> #include <net/ieee80211_radiotap.h>
> #include "ieee80211_i.h"
> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> index 972895e9f22dc..3527b17f235a8 100644
> --- a/net/mac80211/rx.c
> +++ b/net/mac80211/rx.c
> @@ -17,6 +17,7 @@
> #include <linux/etherdevice.h>
> #include <linux/rcupdate.h>
> #include <linux/export.h>
> +#include <linux/kcov.h>
> #include <linux/bitops.h>
> #include <net/mac80211.h>
> #include <net/ieee80211_radiotap.h>
> --
> 2.30.0

Acked-by: Andrey Konovalov <[email protected]>

Subject: [tip: sched/core] kcov: Remove kcov include from sched.h and move it to its users.

The following commit has been merged into the sched/core branch of tip:

Commit-ID: eae7a59d5a1e9bcf9804bcbd006ddce5cf72f8f4
Gitweb: https://git.kernel.org/tip/eae7a59d5a1e9bcf9804bcbd006ddce5cf72f8f4
Author: Sebastian Andrzej Siewior <[email protected]>
AuthorDate: Thu, 18 Feb 2021 18:31:24 +01:00
Committer: Peter Zijlstra <[email protected]>
CommitterDate: Mon, 01 Mar 2021 18:17:22 +01:00

kcov: Remove kcov include from sched.h and move it to its users.

The recent addition of in_serving_softirq() to kconv.h results in
compile failure on PREEMPT_RT because it requires
task_struct::softirq_disable_cnt. This is not available if kconv.h is
included from sched.h.

It is not needed to include kconv.h from sched.h. All but the net/ user
already include the kconv header file.

Move the include of the kconv.h header from sched.h it its users.
Additionally include sched.h from kconv.h to ensure that everything
task_struct related is available.

Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Acked-by: Johannes Berg <[email protected]>
Acked-by: Andrey Konovalov <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
---
include/linux/kcov.h | 1 +
include/linux/sched.h | 1 -
net/core/skbuff.c | 1 +
net/mac80211/iface.c | 1 +
net/mac80211/rx.c | 1 +
5 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/linux/kcov.h b/include/linux/kcov.h
index 4e3037d..55dc338 100644
--- a/include/linux/kcov.h
+++ b/include/linux/kcov.h
@@ -2,6 +2,7 @@
#ifndef _LINUX_KCOV_H
#define _LINUX_KCOV_H

+#include <linux/sched.h>
#include <uapi/linux/kcov.h>

struct task_struct;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index ef00bb2..cf245bc 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -14,7 +14,6 @@
#include <linux/pid.h>
#include <linux/sem.h>
#include <linux/shm.h>
-#include <linux/kcov.h>
#include <linux/mutex.h>
#include <linux/plist.h>
#include <linux/hrtimer.h>
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 545a472..420f23c 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -60,6 +60,7 @@
#include <linux/prefetch.h>
#include <linux/if_vlan.h>
#include <linux/mpls.h>
+#include <linux/kcov.h>

#include <net/protocol.h>
#include <net/dst.h>
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index b80c9b0..c127deb 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -15,6 +15,7 @@
#include <linux/if_arp.h>
#include <linux/netdevice.h>
#include <linux/rtnetlink.h>
+#include <linux/kcov.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>
#include "ieee80211_i.h"
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index c1343c0..62047e9 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -17,6 +17,7 @@
#include <linux/etherdevice.h>
#include <linux/rcupdate.h>
#include <linux/export.h>
+#include <linux/kcov.h>
#include <linux/bitops.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>

Subject: [tip: sched/core] kcov: Remove kcov include from sched.h and move it to its users.

The following commit has been merged into the sched/core branch of tip:

Commit-ID: 4c7ee75cccbf0635cbec6528ae7fff4b7bc549fa
Gitweb: https://git.kernel.org/tip/4c7ee75cccbf0635cbec6528ae7fff4b7bc549fa
Author: Sebastian Andrzej Siewior <[email protected]>
AuthorDate: Thu, 18 Feb 2021 18:31:24 +01:00
Committer: Peter Zijlstra <[email protected]>
CommitterDate: Wed, 03 Mar 2021 10:32:47 +01:00

kcov: Remove kcov include from sched.h and move it to its users.

The recent addition of in_serving_softirq() to kconv.h results in
compile failure on PREEMPT_RT because it requires
task_struct::softirq_disable_cnt. This is not available if kconv.h is
included from sched.h.

It is not needed to include kconv.h from sched.h. All but the net/ user
already include the kconv header file.

Move the include of the kconv.h header from sched.h it its users.
Additionally include sched.h from kconv.h to ensure that everything
task_struct related is available.

Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Acked-by: Johannes Berg <[email protected]>
Acked-by: Andrey Konovalov <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
---
drivers/usb/usbip/usbip_common.h | 1 +
include/linux/kcov.h | 1 +
include/linux/sched.h | 1 -
net/core/skbuff.c | 1 +
net/mac80211/iface.c | 1 +
net/mac80211/rx.c | 1 +
6 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/usbip/usbip_common.h b/drivers/usb/usbip/usbip_common.h
index d60ce17..a7dd6c6 100644
--- a/drivers/usb/usbip/usbip_common.h
+++ b/drivers/usb/usbip/usbip_common.h
@@ -18,6 +18,7 @@
#include <linux/usb.h>
#include <linux/wait.h>
#include <linux/sched/task.h>
+#include <linux/kcov.h>
#include <uapi/linux/usbip.h>

#undef pr_fmt
diff --git a/include/linux/kcov.h b/include/linux/kcov.h
index 4e3037d..55dc338 100644
--- a/include/linux/kcov.h
+++ b/include/linux/kcov.h
@@ -2,6 +2,7 @@
#ifndef _LINUX_KCOV_H
#define _LINUX_KCOV_H

+#include <linux/sched.h>
#include <uapi/linux/kcov.h>

struct task_struct;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index ef00bb2..cf245bc 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -14,7 +14,6 @@
#include <linux/pid.h>
#include <linux/sem.h>
#include <linux/shm.h>
-#include <linux/kcov.h>
#include <linux/mutex.h>
#include <linux/plist.h>
#include <linux/hrtimer.h>
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 545a472..420f23c 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -60,6 +60,7 @@
#include <linux/prefetch.h>
#include <linux/if_vlan.h>
#include <linux/mpls.h>
+#include <linux/kcov.h>

#include <net/protocol.h>
#include <net/dst.h>
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index b80c9b0..c127deb 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -15,6 +15,7 @@
#include <linux/if_arp.h>
#include <linux/netdevice.h>
#include <linux/rtnetlink.h>
+#include <linux/kcov.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>
#include "ieee80211_i.h"
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index c1343c0..62047e9 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -17,6 +17,7 @@
#include <linux/etherdevice.h>
#include <linux/rcupdate.h>
#include <linux/export.h>
+#include <linux/kcov.h>
#include <linux/bitops.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>

Subject: [tip: sched/core] kcov: Remove kcov include from sched.h and move it to its users.

The following commit has been merged into the sched/core branch of tip:

Commit-ID: 183f47fcaa54a5ffe671d990186d330ac8c63b10
Gitweb: https://git.kernel.org/tip/183f47fcaa54a5ffe671d990186d330ac8c63b10
Author: Sebastian Andrzej Siewior <[email protected]>
AuthorDate: Thu, 18 Feb 2021 18:31:24 +01:00
Committer: Ingo Molnar <[email protected]>
CommitterDate: Sat, 06 Mar 2021 12:40:21 +01:00

kcov: Remove kcov include from sched.h and move it to its users.

The recent addition of in_serving_softirq() to kconv.h results in
compile failure on PREEMPT_RT because it requires
task_struct::softirq_disable_cnt. This is not available if kconv.h is
included from sched.h.

It is not needed to include kconv.h from sched.h. All but the net/ user
already include the kconv header file.

Move the include of the kconv.h header from sched.h it its users.
Additionally include sched.h from kconv.h to ensure that everything
task_struct related is available.

Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
Acked-by: Johannes Berg <[email protected]>
Acked-by: Andrey Konovalov <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
---
drivers/usb/usbip/usbip_common.h | 1 +
include/linux/kcov.h | 1 +
include/linux/sched.h | 1 -
net/core/skbuff.c | 1 +
net/mac80211/iface.c | 1 +
net/mac80211/rx.c | 1 +
6 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/usbip/usbip_common.h b/drivers/usb/usbip/usbip_common.h
index d60ce17..a7dd6c6 100644
--- a/drivers/usb/usbip/usbip_common.h
+++ b/drivers/usb/usbip/usbip_common.h
@@ -18,6 +18,7 @@
#include <linux/usb.h>
#include <linux/wait.h>
#include <linux/sched/task.h>
+#include <linux/kcov.h>
#include <uapi/linux/usbip.h>

#undef pr_fmt
diff --git a/include/linux/kcov.h b/include/linux/kcov.h
index 4e3037d..55dc338 100644
--- a/include/linux/kcov.h
+++ b/include/linux/kcov.h
@@ -2,6 +2,7 @@
#ifndef _LINUX_KCOV_H
#define _LINUX_KCOV_H

+#include <linux/sched.h>
#include <uapi/linux/kcov.h>

struct task_struct;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index ef00bb2..cf245bc 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -14,7 +14,6 @@
#include <linux/pid.h>
#include <linux/sem.h>
#include <linux/shm.h>
-#include <linux/kcov.h>
#include <linux/mutex.h>
#include <linux/plist.h>
#include <linux/hrtimer.h>
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 545a472..420f23c 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -60,6 +60,7 @@
#include <linux/prefetch.h>
#include <linux/if_vlan.h>
#include <linux/mpls.h>
+#include <linux/kcov.h>

#include <net/protocol.h>
#include <net/dst.h>
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index b80c9b0..c127deb 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -15,6 +15,7 @@
#include <linux/if_arp.h>
#include <linux/netdevice.h>
#include <linux/rtnetlink.h>
+#include <linux/kcov.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>
#include "ieee80211_i.h"
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index c1343c0..62047e9 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -17,6 +17,7 @@
#include <linux/etherdevice.h>
#include <linux/rcupdate.h>
#include <linux/export.h>
+#include <linux/kcov.h>
#include <linux/bitops.h>
#include <net/mac80211.h>
#include <net/ieee80211_radiotap.h>