2019-10-12 11:59:59

by Vito Caputo

[permalink] [raw]
Subject: [PATCH] net: core: datagram: tidy up copy functions a bit

Eliminate some verbosity by using min() macro and consolidating some
things, also fix inconsistent zero tests (! vs. == 0).

Signed-off-by: Vito Caputo <[email protected]>
---
net/core/datagram.c | 44 ++++++++++++++------------------------------
1 file changed, 14 insertions(+), 30 deletions(-)

diff --git a/net/core/datagram.c b/net/core/datagram.c
index 4cc8dc5db2b7..08d403f93952 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -413,13 +413,11 @@ static int __skb_datagram_iter(const struct sk_buff *skb, int offset,
struct iov_iter *), void *data)
{
int start = skb_headlen(skb);
- int i, copy = start - offset, start_off = offset, n;
+ int i, copy, start_off = offset, n;
struct sk_buff *frag_iter;

/* Copy header. */
- if (copy > 0) {
- if (copy > len)
- copy = len;
+ if ((copy = min(start - offset, len)) > 0) {
n = cb(skb->data + offset, copy, data, to);
offset += n;
if (n != copy)
@@ -430,39 +428,33 @@ static int __skb_datagram_iter(const struct sk_buff *skb, int offset,

/* Copy paged appendix. Hmm... why does this look so complicated? */
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
- int end;
const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+ int end = start + skb_frag_size(frag);

WARN_ON(start > offset + len);

- end = start + skb_frag_size(frag);
- if ((copy = end - offset) > 0) {
+ if ((copy = min(end - offset, len)) > 0) {
struct page *page = skb_frag_page(frag);
u8 *vaddr = kmap(page);

- if (copy > len)
- copy = len;
n = cb(vaddr + skb_frag_off(frag) + offset - start,
copy, data, to);
kunmap(page);
offset += n;
if (n != copy)
goto short_copy;
- if (!(len -= copy))
+ if ((len -= copy) == 0)
return 0;
}
start = end;
}

skb_walk_frags(skb, frag_iter) {
- int end;
+ int end = start + frag_iter->len;

WARN_ON(start > offset + len);

- end = start + frag_iter->len;
- if ((copy = end - offset) > 0) {
- if (copy > len)
- copy = len;
+ if ((copy = min(end - offset, len)) > 0) {
if (__skb_datagram_iter(frag_iter, offset - start,
to, copy, fault_short, cb, data))
goto fault;
@@ -545,13 +537,11 @@ int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset,
int len)
{
int start = skb_headlen(skb);
- int i, copy = start - offset;
struct sk_buff *frag_iter;
+ int i, copy;

/* Copy header. */
- if (copy > 0) {
- if (copy > len)
- copy = len;
+ if ((copy = min(start - offset, len)) > 0) {
if (copy_from_iter(skb->data + offset, copy, from) != copy)
goto fault;
if ((len -= copy) == 0)
@@ -561,24 +551,21 @@ int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset,

/* Copy paged appendix. Hmm... why does this look so complicated? */
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
- int end;
const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+ int end = start + skb_frag_size(frag);

WARN_ON(start > offset + len);

- end = start + skb_frag_size(frag);
- if ((copy = end - offset) > 0) {
+ if ((copy = min(end - offset, len)) > 0) {
size_t copied;

- if (copy > len)
- copy = len;
copied = copy_page_from_iter(skb_frag_page(frag),
skb_frag_off(frag) + offset - start,
copy, from);
if (copied != copy)
goto fault;

- if (!(len -= copy))
+ if ((len -= copy) == 0)
return 0;
offset += copy;
}
@@ -586,14 +573,11 @@ int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset,
}

skb_walk_frags(skb, frag_iter) {
- int end;
+ int end = start + frag_iter->len;

WARN_ON(start > offset + len);

- end = start + frag_iter->len;
- if ((copy = end - offset) > 0) {
- if (copy > len)
- copy = len;
+ if ((copy = min(end - offset, len)) > 0) {
if (skb_copy_datagram_from_iter(frag_iter,
offset - start,
from, copy))
--
2.11.0


2019-10-13 19:36:18

by Eric Dumazet

[permalink] [raw]
Subject: Re: [PATCH] net: core: datagram: tidy up copy functions a bit



On 10/12/19 4:55 AM, Vito Caputo wrote:
> Eliminate some verbosity by using min() macro and consolidating some
> things, also fix inconsistent zero tests (! vs. == 0).
>
> Signed-off-by: Vito Caputo <[email protected]>
> ---
> net/core/datagram.c | 44 ++++++++++++++------------------------------
> 1 file changed, 14 insertions(+), 30 deletions(-)
>
> diff --git a/net/core/datagram.c b/net/core/datagram.c
> index 4cc8dc5db2b7..08d403f93952 100644
> --- a/net/core/datagram.c
> +++ b/net/core/datagram.c
> @@ -413,13 +413,11 @@ static int __skb_datagram_iter(const struct sk_buff *skb, int offset,
> struct iov_iter *), void *data)
> {
> int start = skb_headlen(skb);
> - int i, copy = start - offset, start_off = offset, n;
> + int i, copy, start_off = offset, n;
> struct sk_buff *frag_iter;
>
> /* Copy header. */
> - if (copy > 0) {
> - if (copy > len)
> - copy = len;
> + if ((copy = min(start - offset, len)) > 0) {

No, we prefer not having this kind of construct anymore.

This refactoring looks unnecessary code churn, making our future backports not
clean cherry-picks.

Simply making sure this patch does not bring a regression is very time consuming.

2019-10-13 20:03:33

by Vito Caputo

[permalink] [raw]
Subject: Re: [PATCH] net: core: datagram: tidy up copy functions a bit

On Sun, Oct 13, 2019 at 12:30:41PM -0700, Eric Dumazet wrote:
>
>
> On 10/12/19 4:55 AM, Vito Caputo wrote:
> > Eliminate some verbosity by using min() macro and consolidating some
> > things, also fix inconsistent zero tests (! vs. == 0).
> >
> > Signed-off-by: Vito Caputo <[email protected]>
> > ---
> > net/core/datagram.c | 44 ++++++++++++++------------------------------
> > 1 file changed, 14 insertions(+), 30 deletions(-)
> >
> > diff --git a/net/core/datagram.c b/net/core/datagram.c
> > index 4cc8dc5db2b7..08d403f93952 100644
> > --- a/net/core/datagram.c
> > +++ b/net/core/datagram.c
> > @@ -413,13 +413,11 @@ static int __skb_datagram_iter(const struct sk_buff *skb, int offset,
> > struct iov_iter *), void *data)
> > {
> > int start = skb_headlen(skb);
> > - int i, copy = start - offset, start_off = offset, n;
> > + int i, copy, start_off = offset, n;
> > struct sk_buff *frag_iter;
> >
> > /* Copy header. */
> > - if (copy > 0) {
> > - if (copy > len)
> > - copy = len;
> > + if ((copy = min(start - offset, len)) > 0) {
>
> No, we prefer not having this kind of construct anymore.
>
> This refactoring looks unnecessary code churn, making our future backports not
> clean cherry-picks.
>
> Simply making sure this patch does not bring a regression is very time consuming.

Should I not bother submitting patches for such cleanups?

I submitted another, more trivial patch, is it also considered unnecessary churn:

---

Author: Vito Caputo <[email protected]>
Date: Sat Oct 12 17:10:41 2019 -0700

net: core: skbuff: skb_checksum_setup() drop err

Return directly from all switch cases, no point in storing in err.

Signed-off-by: Vito Caputo <[email protected]>

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index f5f904f46893..c59b68a413b5 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -4888,23 +4888,14 @@ static int skb_checksum_setup_ipv6(struct sk_buff *skb, bool recalculate)
*/
int skb_checksum_setup(struct sk_buff *skb, bool recalculate)
{
- int err;
-
switch (skb->protocol) {
case htons(ETH_P_IP):
- err = skb_checksum_setup_ipv4(skb, recalculate);
- break;
-
+ return skb_checksum_setup_ipv4(skb, recalculate);
case htons(ETH_P_IPV6):
- err = skb_checksum_setup_ipv6(skb, recalculate);
- break;
-
+ return skb_checksum_setup_ipv6(skb, recalculate);
default:
- err = -EPROTO;
- break;
+ return -EPROTO;
}
-
- return err;
}
EXPORT_SYMBOL(skb_checksum_setup);

---

Asking to calibrate my thresholds to yours, since I was planning to volunteer
some time each evening to reading kernel code and submitting any obvious
cleanups.

Thanks,
Vito Caputo

2019-10-13 20:24:58

by Eric Dumazet

[permalink] [raw]
Subject: Re: [PATCH] net: core: datagram: tidy up copy functions a bit



On 10/13/19 1:01 PM, Vito Caputo wrote:
> On Sun, Oct 13, 2019 at 12:30:41PM -0700, Eric Dumazet wrote:
>>
>>
>> On 10/12/19 4:55 AM, Vito Caputo wrote:
>>> Eliminate some verbosity by using min() macro and consolidating some
>>> things, also fix inconsistent zero tests (! vs. == 0).
>>>
>>> Signed-off-by: Vito Caputo <[email protected]>
>>> ---
>>> net/core/datagram.c | 44 ++++++++++++++------------------------------
>>> 1 file changed, 14 insertions(+), 30 deletions(-)
>>>
>>> diff --git a/net/core/datagram.c b/net/core/datagram.c
>>> index 4cc8dc5db2b7..08d403f93952 100644
>>> --- a/net/core/datagram.c
>>> +++ b/net/core/datagram.c
>>> @@ -413,13 +413,11 @@ static int __skb_datagram_iter(const struct sk_buff *skb, int offset,
>>> struct iov_iter *), void *data)
>>> {
>>> int start = skb_headlen(skb);
>>> - int i, copy = start - offset, start_off = offset, n;
>>> + int i, copy, start_off = offset, n;
>>> struct sk_buff *frag_iter;
>>>
>>> /* Copy header. */
>>> - if (copy > 0) {
>>> - if (copy > len)
>>> - copy = len;
>>> + if ((copy = min(start - offset, len)) > 0) {
>>
>> No, we prefer not having this kind of construct anymore.
>>
>> This refactoring looks unnecessary code churn, making our future backports not
>> clean cherry-picks.
>>
>> Simply making sure this patch does not bring a regression is very time consuming.
>
> Should I not bother submitting patches for such cleanups?
>
> I submitted another, more trivial patch, is it also considered unnecessary churn:
>
> ---
>
> Author: Vito Caputo <[email protected]>
> Date: Sat Oct 12 17:10:41 2019 -0700
>
> net: core: skbuff: skb_checksum_setup() drop err
>
> Return directly from all switch cases, no point in storing in err.
>
> Signed-off-by: Vito Caputo <[email protected]>
>
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index f5f904f46893..c59b68a413b5 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> @@ -4888,23 +4888,14 @@ static int skb_checksum_setup_ipv6(struct sk_buff *skb, bool recalculate)
> */
> int skb_checksum_setup(struct sk_buff *skb, bool recalculate)
> {
> - int err;
> -
> switch (skb->protocol) {
> case htons(ETH_P_IP):
> - err = skb_checksum_setup_ipv4(skb, recalculate);
> - break;
> -
> + return skb_checksum_setup_ipv4(skb, recalculate);
> case htons(ETH_P_IPV6):
> - err = skb_checksum_setup_ipv6(skb, recalculate);
> - break;
> -
> + return skb_checksum_setup_ipv6(skb, recalculate);
> default:
> - err = -EPROTO;
> - break;
> + return -EPROTO;
> }
> -
> - return err;
> }
> EXPORT_SYMBOL(skb_checksum_setup);
>
> ---
>
> Asking to calibrate my thresholds to yours, since I was planning to volunteer
> some time each evening to reading kernel code and submitting any obvious
> cleanups.
>

This is not a cleanup.

You prefer seeing the code written the way you did, but that is really a matter of taste.

Think about backports of real bug fixes to stable kernels.

Having these re-writes of code make things less easy for us really.
So in general we tend to leave the existing code style.

I already replied to the other patch submission, please read

https://marc.info/?l=linux-netdev&m=157099669227635&w=2


2019-10-13 23:19:51

by Vito Caputo

[permalink] [raw]
Subject: Re: [PATCH] net: core: datagram: tidy up copy functions a bit

On Sun, Oct 13, 2019 at 01:17:18PM -0700, Eric Dumazet wrote:
>
>
> On 10/13/19 1:01 PM, Vito Caputo wrote:
> > On Sun, Oct 13, 2019 at 12:30:41PM -0700, Eric Dumazet wrote:
> >>
> >>
> >> On 10/12/19 4:55 AM, Vito Caputo wrote:
> >>> Eliminate some verbosity by using min() macro and consolidating some
> >>> things, also fix inconsistent zero tests (! vs. == 0).
> >>>
> >>> Signed-off-by: Vito Caputo <[email protected]>
> >>> ---
> >>> net/core/datagram.c | 44 ++++++++++++++------------------------------
> >>> 1 file changed, 14 insertions(+), 30 deletions(-)
> >>>
> >>> diff --git a/net/core/datagram.c b/net/core/datagram.c
> >>> index 4cc8dc5db2b7..08d403f93952 100644
> >>> --- a/net/core/datagram.c
> >>> +++ b/net/core/datagram.c
> >>> @@ -413,13 +413,11 @@ static int __skb_datagram_iter(const struct sk_buff *skb, int offset,
> >>> struct iov_iter *), void *data)
> >>> {
> >>> int start = skb_headlen(skb);
> >>> - int i, copy = start - offset, start_off = offset, n;
> >>> + int i, copy, start_off = offset, n;
> >>> struct sk_buff *frag_iter;
> >>>
> >>> /* Copy header. */
> >>> - if (copy > 0) {
> >>> - if (copy > len)
> >>> - copy = len;
> >>> + if ((copy = min(start - offset, len)) > 0) {
> >>
> >> No, we prefer not having this kind of construct anymore.
> >>
> >> This refactoring looks unnecessary code churn, making our future backports not
> >> clean cherry-picks.
> >>
> >> Simply making sure this patch does not bring a regression is very time consuming.
> >
> > Should I not bother submitting patches for such cleanups?
> >
> > I submitted another, more trivial patch, is it also considered unnecessary churn:
> >
> > ---
> >
> > Author: Vito Caputo <[email protected]>
> > Date: Sat Oct 12 17:10:41 2019 -0700
> >
> > net: core: skbuff: skb_checksum_setup() drop err
> >
> > Return directly from all switch cases, no point in storing in err.
> >
> > Signed-off-by: Vito Caputo <[email protected]>
> >
> > diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> > index f5f904f46893..c59b68a413b5 100644
> > --- a/net/core/skbuff.c
> > +++ b/net/core/skbuff.c
> > @@ -4888,23 +4888,14 @@ static int skb_checksum_setup_ipv6(struct sk_buff *skb, bool recalculate)
> > */
> > int skb_checksum_setup(struct sk_buff *skb, bool recalculate)
> > {
> > - int err;
> > -
> > switch (skb->protocol) {
> > case htons(ETH_P_IP):
> > - err = skb_checksum_setup_ipv4(skb, recalculate);
> > - break;
> > -
> > + return skb_checksum_setup_ipv4(skb, recalculate);
> > case htons(ETH_P_IPV6):
> > - err = skb_checksum_setup_ipv6(skb, recalculate);
> > - break;
> > -
> > + return skb_checksum_setup_ipv6(skb, recalculate);
> > default:
> > - err = -EPROTO;
> > - break;
> > + return -EPROTO;
> > }
> > -
> > - return err;
> > }
> > EXPORT_SYMBOL(skb_checksum_setup);
> >
> > ---
> >
> > Asking to calibrate my thresholds to yours, since I was planning to volunteer
> > some time each evening to reading kernel code and submitting any obvious
> > cleanups.
> >
>
> This is not a cleanup.
>
> You prefer seeing the code written the way you did, but that is really a matter of taste.
>

I respectfully disagree with your assertion. When the diff --stat shows
more lines removed than added without harming readability, preferably
improving readability, it's both a cleanup and not a debatable matter of
taste. Having the quantifiable metric of fewer lines of code matters.

> Think about backports of real bug fixes to stable kernels.
>

That's fair, but when the change is an isolated mechanical one in a
single small function, as the one quoted above - is that really of any
significant burden on backports?

> Having these re-writes of code make things less easy for us really.
> So in general we tend to leave the existing code style.
>
> I already replied to the other patch submission, please read
>
> https://marc.info/?l=linux-netdev&m=157099669227635&w=2
>

I read it, thank you for your responses.

Do you have any guidance to offer someone wanting to contribute with 1-2
hours available per day? I don't want to cause a nuisance, but would
like to help where I can. My flawed assumption was that small, isolated
hygienic contributions without functionally changing anything would be
appropriate.

Thanks,
Vito Caputo

2019-10-14 01:10:45

by Eric Dumazet

[permalink] [raw]
Subject: Re: [PATCH] net: core: datagram: tidy up copy functions a bit



On 10/13/19 3:41 PM, Vito Caputo wrote:

> I read it, thank you for your responses.
>
> Do you have any guidance to offer someone wanting to contribute with 1-2
> hours available per day? I don't want to cause a nuisance, but would
> like to help where I can. My flawed assumption was that small, isolated
> hygienic contributions without functionally changing anything would be
> appropriate.

I suggest you look at the syzkaller huge queue of bugs.

You will learn more interesting stuff, and you will help the community
in a more quantifiable way.

https://syzkaller.appspot.com/upstream


2019-10-16 07:23:09

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: core: datagram: tidy up copy functions a bit

From: Vito Caputo <[email protected]>
Date: Sat, 12 Oct 2019 04:55:09 -0700

> + if ((copy = min(start - offset, len)) > 0) {

As Eric said, we try to avoid this very construct these days.

I'm not applying this patch.

Thank you.

2019-10-21 08:56:15

by Chen, Rong A

[permalink] [raw]
Subject: [net] 635f03c839: WARNING:at_net/core/datagram.c:#__skb_datagram_iter

FYI, we noticed the following commit (built with gcc-7):

commit: 635f03c839fb2c207dc2e2cea65d382a0798abea ("[PATCH] net: core: datagram: tidy up copy functions a bit")
url: https://github.com/0day-ci/linux/commits/Vito-Caputo/net-core-datagram-tidy-up-copy-functions-a-bit/20191013-002125


in testcase: packetdrill
with following parameters:




on test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 8G

caused below changes (please refer to attached dmesg/kmsg for entire log/backtrace):


+-----------------------------------------------------+------------+------------+
| | 524900a212 | 635f03c839 |
+-----------------------------------------------------+------------+------------+
| boot_successes | 15 | 8 |
| boot_failures | 0 | 20 |
| WARNING:at_net/core/datagram.c:#__skb_datagram_iter | 0 | 20 |
| RIP:__skb_datagram_iter | 0 | 20 |
+-----------------------------------------------------+------------+------------+


If you fix the issue, kindly add following tag
Reported-by: kernel test robot <[email protected]>


[ 24.142627] WARNING: CPU: 0 PID: 5761 at net/core/datagram.c:434 __skb_datagram_iter+0x1bb/0x280
[ 24.143997] Modules linked in: tun intel_rapl_msr intel_rapl_common sr_mod cdrom crct10dif_pclmul sg crc32_pclmul ata_generic crc32c_intel pata_acpi ghash_clmulni_intel bochs_drm drm_vram_helper ttm drm_kms_helper ppdev syscopyarea sysfillrect sysimgblt fb_sys_fops drm snd_pcm aesni_intel crypto_simd snd_timer cryptd snd glue_helper soundcore joydev pcspkr serio_raw ata_piix libata i2c_piix4 floppy parport_pc parport ip_tables
[ 24.149092] CPU: 0 PID: 5761 Comm: packetdrill Not tainted 5.4.0-rc1-00465-g635f03c839fb2 #1
[ 24.150229] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
[ 24.151339] RIP: 0010:__skb_datagram_iter+0x1bb/0x280
[ 24.152045] Code: f2 fe ff ff 48 8b 44 24 28 44 8b 44 24 20 4c 8b 4c 24 18 44 8b 5c 24 14 8b 90 bc 00 00 00 48 8b 80 c0 00 00 00 e9 13 ff ff ff <0f> 0b e9 43 ff ff ff 4c 89 e1 4c 8b 69 08 4d 85 ed 74 6f 44 0f b6
[ 24.154518] RSP: 0018:ffffac078290faf8 EFLAGS: 00010297
[ 24.155226] RAX: ffff96ed8afac800 RBX: 0000000000000000 RCX: ffff96ed8afacac0
[ 24.156162] RDX: 00000000000002c0 RSI: 0000000000000000 RDI: ffff96ed06da6d00
[ 24.157119] RBP: 0000000000000000 R08: 0000000000000410 R09: 0000000000000030
[ 24.158036] R10: ffffac078290fc50 R11: 0000000000000000 R12: ffff96ed8afacaf0
[ 24.158979] R13: 0000000000000034 R14: 0000000000000000 R15: 0000000000000034
[ 24.159919] FS: 0000000001e39880(0000) GS:ffff96edffc00000(0000) knlGS:0000000000000000
[ 24.160991] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 24.161750] CR2: 000000000188d1e0 CR3: 00000001df2de000 CR4: 00000000000406f0
[ 24.162699] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 24.163646] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 24.164589] Call Trace:
[ 24.164928] ? skb_copy_datagram_iter+0xa0/0xa0
[ 24.165580] skb_copy_datagram_iter+0x3b/0xa0
[ 24.166183] ipv6_recv_error+0xa1/0x3d0
[ 24.166718] ? ip_rcv_finish_core+0x10c/0x390
[ 24.167434] ? ip_rcv_finish+0x62/0x90
[ 24.167966] ? ip_rcv+0xd1/0xe0
[ 24.168383] ? tcp_recvmsg+0x791/0xb90
[ 24.168875] ? ip6_datagram_recv_specific_ctl+0x580/0x580
[ 24.169602] tcp_recvmsg+0x791/0xb90
[ 24.170078] ? rw_copy_check_uvector+0x5b/0x150
[ 24.170705] ? import_iovec+0x36/0xf0
[ 24.171214] inet6_recvmsg+0x5d/0x100
[ 24.171703] ___sys_recvmsg+0xf5/0x240
[ 24.172226] ? __might_fault+0x2b/0x30
[ 24.172748] ? __might_fault+0x2b/0x30
[ 24.173271] ? sock_getsockopt+0x3d4/0xb90
[ 24.173842] ? __sys_recvmsg+0x5b/0xa0
[ 24.174332] __sys_recvmsg+0x5b/0xa0
[ 24.174828] do_syscall_64+0x5b/0x1d0
[ 24.175901] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 24.177116] RIP: 0033:0x42db60
[ 24.178108] Code: 40 00 41 54 55 41 89 d4 53 48 89 f5 89 fb 48 83 ec 10 e8 03 f7 ff ff 48 63 fb 41 89 c0 49 63 d4 48 89 ee b8 2f 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 1b 44 89 c7 48 89 44 24 08 e8 3b f7 ff ff 48
[ 24.181690] RSP: 002b:00007ffd8ff5dff0 EFLAGS: 00000293 ORIG_RAX: 000000000000002f
[ 24.183219] RAX: ffffffffffffffda RBX: 0000000000000009 RCX: 000000000042db60
[ 24.184724] RDX: 0000000000002000 RSI: 0000000001e40d90 RDI: 0000000000000009
[ 24.186296] RBP: 0000000001e40d90 R08: 0000000000000000 R09: 00000000000007e0
[ 24.187797] R10: 0000000000000040 R11: 0000000000000293 R12: 0000000000002000
[ 24.189236] R13: 0000000000434bc0 R14: 0000000000000000 R15: 0000000000000000
[ 24.190659] ---[ end trace 2cde539dc387f671 ]---


To reproduce:

# build kernel
cd linux
cp config-5.4.0-rc1-00465-g635f03c839fb2 .config
make HOSTCC=gcc-7 CC=gcc-7 ARCH=x86_64 olddefconfig prepare modules_prepare bzImage

git clone https://github.com/intel/lkp-tests.git
cd lkp-tests
bin/lkp qemu -k <bzImage> job-script # job-script is attached in this email



Thanks,
Rong Chen


Attachments:
(No filename) (5.19 kB)
config-5.4.0-rc1-00465-g635f03c839fb2 (203.89 kB)
job-script (4.90 kB)
dmesg.xz (27.11 kB)
packetdrill (25.98 kB)
Download all attachments