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