Bug 2532834
| Summary: | NULL pointer dereference in rt712_sdca_dmic_set_gain_put during alsactl startup on Dell Precision 5690 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | choi | ||||||
| Component: | kernel | Assignee: | Justin M. Forbes <jforbes> | ||||||
| Status: | NEW --- | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||||
| Severity: | medium | Docs Contact: | |||||||
| Priority: | unspecified | ||||||||
| Version: | 44 | CC: | acaringi, adscvr, airlied, hans, hpa, jforbes, junjie.cao, kernel-maint, linville, masami256, mchehab, nickolasjcarr, ptalbert, steved, suraj.ghimire7 | ||||||
| Target Milestone: | --- | Keywords: | Regression | ||||||
| Target Release: | --- | ||||||||
| Hardware: | x86_64 | ||||||||
| OS: | Linux | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | Doc Type: | --- | |||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | Environment: | ||||||||
| Last Closed: | Type: | --- | |||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Attachments: |
|
||||||||
|
Description
choi
2026-09-14 03:08:45 UTC
Created attachment 2157672 [details]
kernel panic log
The oops comes from a type mix-up in sound/soc/codecs/rt712-sdca-dmic.c. The two gain kcontrol handlers read the driver data as struct rt712_sdca_priv, but this driver stores struct rt712_sdca_dmic_priv. "slave" is at a different offset in the two, so the dev_err() in the put handler's error path gets a NULL slave. Your log shows it: RSI, the dev argument of __dev_printk, is 0x8. Fix posted upstream: https://lore.kernel.org/all/20260920024232.710189-1-junjie.cao@intel.com/ It is compile-tested only; I don't have this hardware. The patch does not cover why the write fails in the first place ("Defer on undeferrable control: 40800f13", about a second after the "Bus clash" / "PARITY error" lines). With the patch that write should log "... can't be set" instead of oopsing. Whether the DMIC gain then works is unknown. One data point would help upstream: does a 7.1.13 boot on this machine also log that line? journalctl --list-boots journalctl -k -b -N | grep -i undeferrable (N = the index of a 7.1.13 boot.) The buggy code is the same in 7.1.13, so if the line is absent there, what changed in 7.2 is the failing write, not the oops path. If you can build a kernel with the patch, please reply on the lore thread with the result. Hello - On 7.1.13, it does not log that line. journalctl -k -b 160 Sep 09 22:58:43 fedora kernel: Linux version 7.2.4-200.fc44.x86_64 (mockbuild@6f2ef927b6134e1d825ee0175a92e3bb) (gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2), GNU ld ve> journalctl -k -b 160 | grep -i undeferrable Sep 09 22:59:11 fedora kernel: rt712-sdca-dmic sdw:0:3:025d:1713:01: Defer on undeferrable control: 40800f13 journalctl -k -b 0 Sep 20 09:16:13 fedora kernel: Linux version 7.1.13-200.fc44.x86_64 (mockbuild@62743d42751a44818ece1b6f90816ef3) (gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2), GNU ld v> journalctl -k -b 0 | grep -i undeferrable [no output] I'll report back shortly with the build. Hi Junjie, Thank you for the patch. I have compiled and tested it on my machine, the the panic is no longer present and the sound works. Please see attachment log.log. Best, Created attachment 2158395 [details]
kernel log with patch
|