Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error.rs: use a tighter inner type for Error #296

Open
ojeda opened this issue May 26, 2021 · 3 comments
Open

error.rs: use a tighter inner type for Error #296

ojeda opened this issue May 26, 2021 · 3 comments
Labels
• lib Related to the `rust/` library.

Comments

@ojeda
Copy link
Member

ojeda commented May 26, 2021

From @nbdd0121 #287 (comment):

After 3 is fixed, we can probably use NonZeroI16 as the inner type. This allows Result<()> to fit in 16-bit, instead of 64-bit as it is now.

Depends on #295.

@ojeda ojeda added • lib Related to the `rust/` library. prio: normal good first issue Good for newcomers labels May 26, 2021
@ojeda ojeda changed the title rust/kernel/error.rs: use a tighter inner type for Error error.rs: use a tighter inner type for Error May 26, 2021
@sodar
Copy link

sodar commented Jul 9, 2021

Hi! I would be happy to start contributing to Rust-for-linux and I have found this issue. Is it something that somebody already works on?

I see that there is a #356, but last changes were made 1 month ago. Is it something that needs picking up on?

@ojeda
Copy link
Member Author

ojeda commented Jul 9, 2021

Welcome!

At the time we have some PRs waiting because we need to prioritize things for getting into mainline -- but we will get to them. If you are interested in this one, I would suggest asking @foxhlchen in the PR or in Zulip :)

@sodar
Copy link

sodar commented Jul 9, 2021

@ojeda Thanks for the info! I will.

ojeda pushed a commit that referenced this issue Jan 30, 2022
Johan reported the below crash with test_bpf on ppc64 e5500:

  test_bpf: #296 ALU_END_FROM_LE 64: 0x0123456789abcdef -> 0x67452301 jited:1
  Oops: Exception in kernel mode, sig: 4 [#1]
  BE PAGE_SIZE=4K SMP NR_CPUS=24 QEMU e500
  Modules linked in: test_bpf(+)
  CPU: 0 PID: 76 Comm: insmod Not tainted 5.14.0-03771-g98c2059e008a-dirty #1
  NIP:  8000000000061c3c LR: 80000000006dea64 CTR: 8000000000061c18
  REGS: c0000000032d3420 TRAP: 0700   Not tainted (5.14.0-03771-g98c2059e008a-dirty)
  MSR:  0000000080089000 <EE,ME>  CR: 88002822  XER: 20000000 IRQMASK: 0
  <...>
  NIP [8000000000061c3c] 0x8000000000061c3c
  LR [80000000006dea64] .__run_one+0x104/0x17c [test_bpf]
  Call Trace:
   .__run_one+0x60/0x17c [test_bpf] (unreliable)
   .test_bpf_init+0x6a8/0xdc8 [test_bpf]
   .do_one_initcall+0x6c/0x28c
   .do_init_module+0x68/0x28c
   .load_module+0x2460/0x2abc
   .__do_sys_init_module+0x120/0x18c
   .system_call_exception+0x110/0x1b8
   system_call_common+0xf0/0x210
  --- interrupt: c00 at 0x101d0acc
  <...>
  ---[ end trace 47b2bf19090bb3d0 ]---

  Illegal instruction

The illegal instruction turned out to be 'ldbrx' emitted for
BPF_FROM_[L|B]E, which was only introduced in ISA v2.06. Guard use of
the same and implement an alternative approach for older processors.

Fixes: 156d0e2 ("powerpc/ebpf/jit: Implement JIT compiler for extended BPF")
Reported-by: Johan Almbladh <[email protected]>
Signed-off-by: Naveen N. Rao <[email protected]>
Tested-by: Johan Almbladh <[email protected]>
Acked-by: Johan Almbladh <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
Link: https://lore.kernel.org/r/d1e51c6fdf572062cf3009a751c3406bda01b832.1641468127.git.naveen.n.rao@linux.vnet.ibm.com
anstylian added a commit to anstylian/linux-rust that referenced this issue Aug 5, 2022
Solves Issue:  error.rs: use a tighter inner type for Error Rust-for-Linux#296

Signed-off-by: angelos <[email protected]>
anstylian added a commit to anstylian/linux-rust that referenced this issue Aug 5, 2022
anstylian added a commit to anstylian/linux-rust that referenced this issue Aug 5, 2022
Solves Issue Rust-for-Linux#296 :  error.rs: use a tighter inner type for Error

Signed-off-by: angelos <[email protected]>
anstylian added a commit to anstylian/linux-rust that referenced this issue Aug 5, 2022
Solves Issue Rust-for-Linux#296:  error.rs: use a tighter inner type for Error

Signed-off-by: angelos <[email protected]>
@nbdd0121 nbdd0121 removed the good first issue Good for newcomers label Sep 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
• lib Related to the `rust/` library.
Development

No branches or pull requests

3 participants