Summary: | [NV4B] null deref on load, NvI2C=1 makes it work | ||||||
---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Hans-Peter Deifel <hpdeifel> | ||||
Component: | Driver/nouveau | Assignee: | Nouveau Project <nouveau> | ||||
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||
Severity: | normal | ||||||
Priority: | medium | ||||||
Version: | git | ||||||
Hardware: | Other | ||||||
OS: | All | ||||||
Whiteboard: | |||||||
i915 platform: | i915 features: | ||||||
Attachments: |
|
Description
Hans-Peter Deifel
2013-08-22 22:57:00 UTC
The code decodes to 1c: 51 push %rcx 1d: 48 8b 47 18 mov 0x18(%rdi),%rax 21: 48 8b 38 mov (%rax),%rdi 24: 48 8b 87 50 03 00 00 mov 0x350(%rdi),%rax 2b:* 48 8b 00 mov (%rax),%rax <-- trapping instruction 2e: 48 85 c0 test %rax,%rax 31: 74 02 je 0x35 33: ff d0 callq *%rax 35: 31 c0 xor %eax,%eax 37: 5a pop %rdx 38: c3 retq Which means that port->func is NULL. Still trying to work out exactly how that happens. Created attachment 84484 [details] [review] pass i2c functions into create func Can you give this patch a shot? It compiles, but I haven't tested it beyond that. Should fix the null deref. But it might still not work. (Obviously without the NvI2C=1 thing.) BTW, how are you hitting this? Did you set something in i2c like bit_test=1? Your patch did work, thank you very much. I could load the module and use it for a few hours without problems. I had indeed set bit_test=1 for i2c_algo_bit although I had forgotten about it. This patch should now be in 3.12-rc1. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.