Skip to content

Commit d9c7e7d

Browse files
committed
math: fft: move NULL guard before plan dereferences in HiFi3 variants
In fft_execute_16() and fft_execute_32() HiFi3 implementations, local variables are initialized from plan->size, plan->len (and in 32-bit: plan->inb32, plan->outb32, plan->bit_reverse_idx) before the 'if (!plan)' guard is reached. Move all plan-> accesses after the NULL check, matching the generic fft_16.c / fft_32.c ordering. Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
1 parent 3c391c6 commit d9c7e7d

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

src/math/fft/fft_16_hifi3.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ void fft_execute_16(struct fft_plan *plan, bool ifft)
3535
ae_valign outu = AE_ZALIGN64();
3636
int depth, top, bottom, index;
3737
int i, j, k, m, n;
38-
int size = plan->size;
39-
int len = plan->len;
38+
int size, len;
4039

4140
if (!plan || !plan->bit_reverse_idx)
4241
return;
4342

43+
size = plan->size;
44+
len = plan->len;
45+
4446
outb = plan->outb16;
4547
if (!plan->inb16 || !outb)
4648
return;

src/math/fft/fft_32_hifi3.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,29 @@ void fft_execute_32(struct fft_plan *plan, bool ifft)
2020
ae_int32x2 sample1;
2121
ae_int32x2 sample2;
2222
ae_int32x2 tw;
23-
ae_int32x2 *inx = (ae_int32x2 *)plan->inb32;
24-
ae_int32x2 *outx = (ae_int32x2 *)plan->outb32;
23+
ae_int32x2 *inx;
24+
ae_int32x2 *outx;
2525
ae_int32x2 *top_ptr;
2626
ae_int32x2 *bot_ptr;
27-
uint16_t *idx = &plan->bit_reverse_idx[0];
27+
uint16_t *idx;
2828
const int32_t *tw_r;
2929
const int32_t *tw_i;
3030
int depth, i;
3131
int j, k, m, n;
32-
int size = plan->size;
33-
int len = plan->len;
32+
int size, len;
3433

3534
if (!plan || !plan->bit_reverse_idx)
3635
return;
3736

3837
if (!plan->inb32 || !plan->outb32)
3938
return;
4039

40+
inx = (ae_int32x2 *)plan->inb32;
41+
outx = (ae_int32x2 *)plan->outb32;
42+
idx = &plan->bit_reverse_idx[0];
43+
size = plan->size;
44+
len = plan->len;
45+
4146
/* step 1: re-arrange input in bit reverse order, and shrink the level to avoid overflow */
4247
if (ifft) {
4348
/* convert to complex conjugate for ifft */

0 commit comments

Comments
 (0)