1. 12 Jul, 2023 1 commit
    • Isaac J. Manjarres's avatar
      regmap-irq: Fix out-of-bounds access when allocating config buffers · 963b54df
      Isaac J. Manjarres authored
      When allocating the 2D array for handling IRQ type registers in
      regmap_add_irq_chip_fwnode(), the intent is to allocate a matrix
      with num_config_bases rows and num_config_regs columns.
      
      This is currently handled by allocating a buffer to hold a pointer for
      each row (i.e. num_config_bases). After that, the logic attempts to
      allocate the memory required to hold the register configuration for
      each row. However, instead of doing this allocation for each row
      (i.e. num_config_bases allocations), the logic erroneously does this
      allocation num_config_regs number of times.
      
      This scenario can lead to out-of-bounds accesses when num_config_regs
      is greater than num_config_bases. Fix this by updating the terminating
      condition of the loop that allocates the memory for holding the register
      configuration to allocate memory only for each row in the matrix.
      
      Amit Pundir reported a crash that was occurring on his db845c device
      due to memory corruption (see "Closes" tag for Amit's report). The KASAN
      report below helped narrow it down to this issue:
      
      [   14.033877][    T1] ==================================================================
      [   14.042507][    T1] BUG: KASAN: invalid-access in regmap_add_irq_chip_fwnode+0x594/0x1364
      [   14.050796][    T1] Write of size 8 at addr 06ffff8081021850 by task init/1
      
      [   14.242004][    T1] The buggy address belongs to the object at ffffff8081021850
      [   14.242004][    T1]  which belongs to the cache kmalloc-8 of size 8
      [   14.255669][    T1] The buggy address is located 0 bytes inside of
      [   14.255669][    T1]  8-byte region [ffffff8081021850, ffffff8081021858)
      
      Fixes: faa87ce9 ("regmap-irq: Introduce config registers for irq types")
      Reported-by: default avatarAmit Pundir <amit.pundir@linaro.org>
      Closes: https://lore.kernel.org/all/CAMi1Hd04mu6JojT3y6wyN2YeVkPR5R3qnkKJ8iR8if_YByCn4w@mail.gmail.com/Tested-by: default avatarJohn Stultz <jstultz@google.com>
      Tested-by: Amit Pundir <amit.pundir@linaro.org> # tested on Dragonboard 845c
      Cc: stable@vger.kernel.org # v6.0+
      Cc: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
      Cc: Saravana Kannan <saravanak@google.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatar"Isaac J. Manjarres" <isaacmanjarres@google.com>
      Link: https://lore.kernel.org/r/20230711193059.2480971-1-isaacmanjarres@google.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      963b54df
  2. 09 Jul, 2023 10 commits
  3. 08 Jul, 2023 29 commits