Skip to contentSkip to conversation

xfrm: remove VLA usage in __xfrm6_sort()

PATCH Applied Kees Cook 3 participants 3 messages Apr 25, 2018 – Apr 26, 2018

Subsystems (3)
lore
Share & tools
lore

Kees Cook

author
#0 lore raw

PATCH v4 1/1 xfrm: remove VLA usage in __xfrm6_sort()

In the quest to remove all stack VLA usage removed from the kernel[1], just use XFRM_MAX_DEPTH as already done for the "class" array. In one case, it'll do this loop up to 5, the other caller up to 6.

[1] https://lkml.org/lkml/2018/3/7/621

---
v4:
- actually remove memset(). :)
v3:
- adjust Subject and commit log (Steffen)
- use "= { }" instead of memset() (Stefano)
v2:
- use XFRM_MAX_DEPTH for "count" array (Steffen and Mathias).

---
 net/ipv6/xfrm6_state.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
net/ipv6/xfrm6_state.c +2 -4
index 16f434791763..5bdca3d5d6b7 100644
@@ -60,11 +60,9 @@ xfrm6_init_temprop(struct xfrm_state *x, const struct xfrm_tmpl *tmpl,
 static int
 __xfrm6_sort(void **dst, void **src, int n, int (*cmp)(void *p), int maxclass)
 {
-	int i;
+	int count[XFRM_MAX_DEPTH] = { };
 	int class[XFRM_MAX_DEPTH];
-	int count[maxclass];
-
-	memset(count, 0, sizeof(count));
+	int i;
 
 	for (i = 0; i < n; i++) {
 		int c;
Signature · 6 lines
2.7.4


-- 
Kees Cook
Pixel Security
Acked-by on v4 1/1
#1 lore raw
Quoted 8 lines · On Wed, 25 Apr 2018 07:46:39 -0700 Kees Cook <[email protected]> wrote:

In the quest to remove all stack VLA usage removed from the kernel[1], just use XFRM_MAX_DEPTH as already done for the "class" array. In one case, it'll do this loop up to 5, the other caller up to 6.

[1] https://lkml.org/lkml/2018/3/7/621

Quoted 9 lines

---
v4:
- actually remove memset(). :)
v3:
- adjust Subject and commit log (Steffen)
- use "= { }" instead of memset() (Stefano)
v2:
- use XFRM_MAX_DEPTH for "count" array (Steffen and Mathias).
---

maintainer Applied
#2 lore raw
Quoted 21 lines · Stefano Brivio
Quoted 8 lines · On Wed, 25 Apr 2018 07:46:39 -0700 Kees Cook <[email protected]> wrote:

In the quest to remove all stack VLA usage removed from the kernel[1], just use XFRM_MAX_DEPTH as already done for the "class" array. In one case, it'll do this loop up to 5, the other caller up to 6.

[1] https://lkml.org/lkml/2018/3/7/621

Quoted 9 lines

---
v4:
- actually remove memset(). :)
v3:
- adjust Subject and commit log (Steffen)
- use "= { }" instead of memset() (Stefano)
v2:
- use XFRM_MAX_DEPTH for "count" array (Steffen and Mathias).
---

Quoted 1 line

Applied to ipsec-next, thanks everyone!