git: drm: Fix pci_bus_read_config_byte() and pci_bus_read_config_word()
Aaron LI
aly at crater.dragonflybsd.org
Tue Oct 13 04:50:41 PDT 2026
commit 1164de8b49758e9e605a6f15ebf575c71dae70bd
Author: Aaron LI <aly at aaronly.me>
Date: Tue Oct 13 15:29:29 2026 +0800
drm: Fix pci_bus_read_config_byte() and pci_bus_read_config_word()
The container_of() used wrongly used '&bus' and thus bogus. Luckily,
these functions are only used by i830_overlay_clock_gating() and
i85x_get_cdclk(), both being very old Intel iGPUs.
Fix the code to directly use 'bus->self', which is properly initialized
in drm_init_pdev().
Cross-checked FreeBSD's version of these two functions, which also uses
'bus->self'.
Caught by GCC 12.5 with warnings:
```
In file included from /usr/src/sys/dev/drm/i915/../../../dev/drm/include/drm/drm_pci.h:35,
from /usr/src/sys/dev/drm/i915/../../../dev/drm/include/drm/drmP.h:79,
from /usr/src/sys/dev/drm/i915/i915_drv.h:47,
from /usr/src/sys/dev/drm/i915/intel_drv.h:33,
from /usr/src/sys/dev/drm/i915/intel_cdclk.c:24:
In function 'pci_bus_read_config_word',
inlined from 'i85x_get_cdclk' at /usr/src/sys/dev/drm/i915/intel_cdclk.c:106:2,
inlined from 'i85x_get_cdclk' at /usr/src/sys/dev/drm/i915/intel_cdclk.c:90:13:
/usr/src/sys/dev/drm/i915/../../../dev/drm/include/linux/pci.h:329:46: warning: array subscript 'const struct pci_dev[0]' is partly outside array bounds of 'struct pci_bus[0]' [-Warray-bounds]
329 | *val = (u16)pci_read_config(pdev->dev.bsddev, where, 2);
| ~~~~~~~~~^~~~~~~
/usr/src/sys/dev/drm/i915/intel_cdclk.c: In function 'i85x_get_cdclk':
/usr/src/sys/dev/drm/i915/intel_cdclk.c:90:13: note: object 'bus' of size 8
90 | static void i85x_get_cdclk(struct drm_i915_private *dev_priv,
| ^~~~~~~~~~~~~~
In file included from /usr/src/sys/dev/drm/i915/../../../dev/drm/include/drm/drm_pci.h:35,
from /usr/src/sys/dev/drm/i915/../../../dev/drm/include/drm/drmP.h:79,
from /usr/src/sys/dev/drm/i915/intel_overlay.c:28:
In function 'pci_bus_read_config_byte',
inlined from 'i830_overlay_clock_gating' at /usr/src/sys/dev/drm/i915/intel_overlay.c:204:2:
/usr/src/sys/dev/drm/i915/../../../dev/drm/include/linux/pci.h:320:45: warning: array subscript 'const struct pci_dev[0]' is partly outside array bounds of 'struct pci_bus[0]' [-Warray-bounds]
320 | *val = (u8)pci_read_config(pdev->dev.bsddev, where, 1);
| ~~~~~~~~~^~~~~~~
/usr/src/sys/dev/drm/i915/intel_overlay.c: In function 'i830_overlay_clock_gating':
/usr/src/sys/dev/drm/i915/intel_overlay.c:191:13: note: object 'bus' of size 8
191 | static void i830_overlay_clock_gating(struct drm_i915_private *dev_priv,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
```
Summary of changes:
sys/dev/drm/include/linux/pci.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1164de8b49758e9e605a6f15ebf575c71dae70bd
--
DragonFly BSD source repository
More information about the Commits
mailing list