Commit 6a010258 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm

Pull ARM fixes from Russell King:
 "Last set of ARM fixes for 5.19:

   - fix for MAX_DMA_ADDRESS overflow

   - fix for find_*_bit performing an out of bounds memory access"

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
  ARM: findbit: fix overflowing offset
  ARM: 9216/1: Fix MAX_DMA_ADDRESS overflow
parents 62072526 ec85bd36
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#else #else
#define MAX_DMA_ADDRESS ({ \ #define MAX_DMA_ADDRESS ({ \
extern phys_addr_t arm_dma_zone_size; \ extern phys_addr_t arm_dma_zone_size; \
arm_dma_zone_size && arm_dma_zone_size < (0x10000000 - PAGE_OFFSET) ? \ arm_dma_zone_size && arm_dma_zone_size < (0x100000000ULL - PAGE_OFFSET) ? \
(PAGE_OFFSET + arm_dma_zone_size) : 0xffffffffUL; }) (PAGE_OFFSET + arm_dma_zone_size) : 0xffffffffUL; })
#endif #endif
......
...@@ -40,8 +40,8 @@ ENDPROC(_find_first_zero_bit_le) ...@@ -40,8 +40,8 @@ ENDPROC(_find_first_zero_bit_le)
* Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset) * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
*/ */
ENTRY(_find_next_zero_bit_le) ENTRY(_find_next_zero_bit_le)
teq r1, #0 cmp r2, r1
beq 3b bhs 3b
ands ip, r2, #7 ands ip, r2, #7
beq 1b @ If new byte, goto old routine beq 1b @ If new byte, goto old routine
ARM( ldrb r3, [r0, r2, lsr #3] ) ARM( ldrb r3, [r0, r2, lsr #3] )
...@@ -81,8 +81,8 @@ ENDPROC(_find_first_bit_le) ...@@ -81,8 +81,8 @@ ENDPROC(_find_first_bit_le)
* Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset) * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
*/ */
ENTRY(_find_next_bit_le) ENTRY(_find_next_bit_le)
teq r1, #0 cmp r2, r1
beq 3b bhs 3b
ands ip, r2, #7 ands ip, r2, #7
beq 1b @ If new byte, goto old routine beq 1b @ If new byte, goto old routine
ARM( ldrb r3, [r0, r2, lsr #3] ) ARM( ldrb r3, [r0, r2, lsr #3] )
...@@ -115,8 +115,8 @@ ENTRY(_find_first_zero_bit_be) ...@@ -115,8 +115,8 @@ ENTRY(_find_first_zero_bit_be)
ENDPROC(_find_first_zero_bit_be) ENDPROC(_find_first_zero_bit_be)
ENTRY(_find_next_zero_bit_be) ENTRY(_find_next_zero_bit_be)
teq r1, #0 cmp r2, r1
beq 3b bhs 3b
ands ip, r2, #7 ands ip, r2, #7
beq 1b @ If new byte, goto old routine beq 1b @ If new byte, goto old routine
eor r3, r2, #0x18 @ big endian byte ordering eor r3, r2, #0x18 @ big endian byte ordering
...@@ -149,8 +149,8 @@ ENTRY(_find_first_bit_be) ...@@ -149,8 +149,8 @@ ENTRY(_find_first_bit_be)
ENDPROC(_find_first_bit_be) ENDPROC(_find_first_bit_be)
ENTRY(_find_next_bit_be) ENTRY(_find_next_bit_be)
teq r1, #0 cmp r2, r1
beq 3b bhs 3b
ands ip, r2, #7 ands ip, r2, #7
beq 1b @ If new byte, goto old routine beq 1b @ If new byte, goto old routine
eor r3, r2, #0x18 @ big endian byte ordering eor r3, r2, #0x18 @ big endian byte ordering
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment