Linux Hardening
 help / color / mirror / Atom feed
* iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/kunit_iov_iter.c:63, Expected got == npages, but, got == 1 (0x1), npages == 256 (0x100) (v7.0.2, ppc)
@ 2026-04-29 11:45 Erhard Furtner
  2026-04-29 14:55 ` LEROY Christophe
  2026-04-29 14:56 ` Christophe Leroy (CS GROUP)
  0 siblings, 2 replies; 4+ messages in thread
From: Erhard Furtner @ 2026-04-29 11:45 UTC (permalink / raw)
  To: linux-hardening; +Cc: linuxppc-dev

Greetings!

Getting this on my G4 DP on kernel v7.0.2 and v7.1-rc1 via 'modprobe -v 
kunit_iov_iter':

[...]
KTAP version 1
  1..1
      KTAP version 1
      # Subtest: iov_iter
      # module: kunit_iov_iter
      1..12
      # iov_kunit_copy_to_kvec: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 1 iov_kunit_copy_to_kvec
      # iov_kunit_copy_from_kvec: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 2 iov_kunit_copy_from_kvec
      # iov_kunit_copy_to_bvec: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 3 iov_kunit_copy_to_bvec
      # iov_kunit_copy_from_bvec: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 4 iov_kunit_copy_from_bvec
      # iov_kunit_copy_to_folioq: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 5 iov_kunit_copy_to_folioq
      # iov_kunit_copy_from_folioq: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 6 iov_kunit_copy_from_folioq
      # iov_kunit_copy_to_xarray: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 7 iov_kunit_copy_to_xarray
      # iov_kunit_copy_from_xarray: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 8 iov_kunit_copy_from_xarray
      # iov_kunit_extract_pages_kvec: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 9 iov_kunit_extract_pages_kvec
      # iov_kunit_extract_pages_bvec: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 10 iov_kunit_extract_pages_bvec
      # iov_kunit_extract_pages_folioq: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 11 iov_kunit_extract_pages_folioq
      # iov_kunit_extract_pages_xarray: ASSERTION FAILED at 
lib/tests/kunit_iov_iter.c:63
      Expected got == npages, but
          got == 1 (0x1)
          npages == 256 (0x100)
      not ok 12 iov_kunit_extract_pages_xarray
  # iov_iter: pass:0 fail:12 skip:0 total:12
  # Totals: pass:0 fail:12 skip:0 total:12
  not ok 1 iov_iter


Suppose this may be a ppc/BE specific test failure as I don't get it on 
my Thinkpad T60 (x86).

Full dmesg and kernel .config available on request.

Greetings,
Erhard

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/kunit_iov_iter.c:63, Expected got == npages, but, got == 1 (0x1), npages == 256 (0x100) (v7.0.2, ppc)
  2026-04-29 11:45 iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/kunit_iov_iter.c:63, Expected got == npages, but, got == 1 (0x1), npages == 256 (0x100) (v7.0.2, ppc) Erhard Furtner
@ 2026-04-29 14:55 ` LEROY Christophe
  2026-04-29 16:05   ` Erhard Furtner
  2026-04-29 14:56 ` Christophe Leroy (CS GROUP)
  1 sibling, 1 reply; 4+ messages in thread
From: LEROY Christophe @ 2026-04-29 14:55 UTC (permalink / raw)
  To: Erhard Furtner, linux-hardening@vger.kernel.org, Kees Cook,
	David Howells
  Cc: linuxppc-dev@lists.ozlabs.org



Le 29/04/2026 à 13:45, Erhard Furtner a écrit :
> Greetings!
> 
> Getting this on my G4 DP on kernel v7.0.2 and v7.1-rc1 via 'modprobe -v 
> kunit_iov_iter':
> 
> [...]
> KTAP version 1
>   1..1
>       KTAP version 1
>       # Subtest: iov_iter
>       # module: kunit_iov_iter
>       1..12
>       # iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 1 iov_kunit_copy_to_kvec

This happens in alloc_pages_bulk_noprof(), due to

	pcp = pcp_spin_trylock(zone->per_cpu_pageset);
	if (!pcp)
		goto failed;

Because:

#ifdef CONFIG_SMP
[...]
/*
  * On CONFIG_SMP=n the UP implementation of spin_trylock() never fails 
and thus
  * is not compatible with our locking scheme. However we do not need 
pcp for
  * scalability in the first place, so just make all the trylocks fail 
and take
  * the slow path unconditionally.
  */
#else
#define pcp_spin_trylock(ptr)		\
		NULL


So apparently it is expected that alloc_pages_bulk() returns 1 on non-SMP.

Christophe

>       # iov_kunit_copy_from_kvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 2 iov_kunit_copy_from_kvec
>       # iov_kunit_copy_to_bvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 3 iov_kunit_copy_to_bvec
>       # iov_kunit_copy_from_bvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 4 iov_kunit_copy_from_bvec
>       # iov_kunit_copy_to_folioq: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 5 iov_kunit_copy_to_folioq
>       # iov_kunit_copy_from_folioq: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 6 iov_kunit_copy_from_folioq
>       # iov_kunit_copy_to_xarray: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 7 iov_kunit_copy_to_xarray
>       # iov_kunit_copy_from_xarray: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 8 iov_kunit_copy_from_xarray
>       # iov_kunit_extract_pages_kvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 9 iov_kunit_extract_pages_kvec
>       # iov_kunit_extract_pages_bvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 10 iov_kunit_extract_pages_bvec
>       # iov_kunit_extract_pages_folioq: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 11 iov_kunit_extract_pages_folioq
>       # iov_kunit_extract_pages_xarray: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 12 iov_kunit_extract_pages_xarray
>   # iov_iter: pass:0 fail:12 skip:0 total:12
>   # Totals: pass:0 fail:12 skip:0 total:12
>   not ok 1 iov_iter
> 
> 
> Suppose this may be a ppc/BE specific test failure as I don't get it on 
> my Thinkpad T60 (x86).
> 
> Full dmesg and kernel .config available on request.
> 
> Greetings,
> Erhard
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/kunit_iov_iter.c:63, Expected got == npages, but, got == 1 (0x1), npages == 256 (0x100) (v7.0.2, ppc)
  2026-04-29 11:45 iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/kunit_iov_iter.c:63, Expected got == npages, but, got == 1 (0x1), npages == 256 (0x100) (v7.0.2, ppc) Erhard Furtner
  2026-04-29 14:55 ` LEROY Christophe
@ 2026-04-29 14:56 ` Christophe Leroy (CS GROUP)
  1 sibling, 0 replies; 4+ messages in thread
From: Christophe Leroy (CS GROUP) @ 2026-04-29 14:56 UTC (permalink / raw)
  To: Erhard Furtner, linux-hardening, Kees Cook, David Howells; +Cc: linuxppc-dev



Le 29/04/2026 à 13:45, Erhard Furtner a écrit :
> Greetings!
> 
> Getting this on my G4 DP on kernel v7.0.2 and v7.1-rc1 via 'modprobe -v 
> kunit_iov_iter':
> 
> [...]
> KTAP version 1
>   1..1
>       KTAP version 1
>       # Subtest: iov_iter
>       # module: kunit_iov_iter
>       1..12
>       # iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 1 iov_kunit_copy_to_kvec

This happens in alloc_pages_bulk_noprof(), due to

	pcp = pcp_spin_trylock(zone->per_cpu_pageset);
	if (!pcp)
		goto failed;

Because:

#ifdef CONFIG_SMP
[...]
/*
  * On CONFIG_SMP=n the UP implementation of spin_trylock() never fails 
and thus
  * is not compatible with our locking scheme. However we do not need 
pcp for
  * scalability in the first place, so just make all the trylocks fail 
and take
  * the slow path unconditionally.
  */
#else
#define pcp_spin_trylock(ptr)		\
		NULL


So apparently it is expected that alloc_pages_bulk() returns 1 on non-SMP.

Christophe

>       # iov_kunit_copy_from_kvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 2 iov_kunit_copy_from_kvec
>       # iov_kunit_copy_to_bvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 3 iov_kunit_copy_to_bvec
>       # iov_kunit_copy_from_bvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 4 iov_kunit_copy_from_bvec
>       # iov_kunit_copy_to_folioq: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 5 iov_kunit_copy_to_folioq
>       # iov_kunit_copy_from_folioq: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 6 iov_kunit_copy_from_folioq
>       # iov_kunit_copy_to_xarray: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 7 iov_kunit_copy_to_xarray
>       # iov_kunit_copy_from_xarray: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 8 iov_kunit_copy_from_xarray
>       # iov_kunit_extract_pages_kvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 9 iov_kunit_extract_pages_kvec
>       # iov_kunit_extract_pages_bvec: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 10 iov_kunit_extract_pages_bvec
>       # iov_kunit_extract_pages_folioq: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 11 iov_kunit_extract_pages_folioq
>       # iov_kunit_extract_pages_xarray: ASSERTION FAILED at lib/tests/ 
> kunit_iov_iter.c:63
>       Expected got == npages, but
>           got == 1 (0x1)
>           npages == 256 (0x100)
>       not ok 12 iov_kunit_extract_pages_xarray
>   # iov_iter: pass:0 fail:12 skip:0 total:12
>   # Totals: pass:0 fail:12 skip:0 total:12
>   not ok 1 iov_iter
> 
> 
> Suppose this may be a ppc/BE specific test failure as I don't get it on 
> my Thinkpad T60 (x86).
> 
> Full dmesg and kernel .config available on request.
> 
> Greetings,
> Erhard
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/kunit_iov_iter.c:63, Expected got == npages, but, got == 1 (0x1), npages == 256 (0x100) (v7.0.2, ppc)
  2026-04-29 14:55 ` LEROY Christophe
@ 2026-04-29 16:05   ` Erhard Furtner
  0 siblings, 0 replies; 4+ messages in thread
From: Erhard Furtner @ 2026-04-29 16:05 UTC (permalink / raw)
  To: LEROY Christophe, linux-hardening@vger.kernel.org, Kees Cook,
	David Howells
  Cc: linuxppc-dev@lists.ozlabs.org

> This happens in alloc_pages_bulk_noprof(), due to
> 
> 	pcp = pcp_spin_trylock(zone->per_cpu_pageset);
> 	if (!pcp)
> 		goto failed;
> 
> Because:
> 
> #ifdef CONFIG_SMP
> [...]
> /*
>    * On CONFIG_SMP=n the UP implementation of spin_trylock() never fails
> and thus
>    * is not compatible with our locking scheme. However we do not need
> pcp for
>    * scalability in the first place, so just make all the trylocks fail
> and take
>    * the slow path unconditionally.
>    */
> #else
> #define pcp_spin_trylock(ptr)		\
> 		NULL
> 
> 
> So apparently it is expected that alloc_pages_bulk() returns 1 on non-SMP.
> 
> Christophe

I got SMP set as my G4 DP got 2 x 7450 cpus.

I can attach full kernel .config when I return on Saturday.

Regards,
Erhard

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-04-29 16:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-29 11:45 iov_kunit_copy_to_kvec: ASSERTION FAILED at lib/tests/kunit_iov_iter.c:63, Expected got == npages, but, got == 1 (0x1), npages == 256 (0x100) (v7.0.2, ppc) Erhard Furtner
2026-04-29 14:55 ` LEROY Christophe
2026-04-29 16:05   ` Erhard Furtner
2026-04-29 14:56 ` Christophe Leroy (CS GROUP)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox