diff options
Diffstat (limited to 'sound/soc/intel/sst-firmware.c')
| -rw-r--r-- | sound/soc/intel/sst-firmware.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sound/soc/intel/sst-firmware.c b/sound/soc/intel/sst-firmware.c index ef2e8b5766a1..b3f9489794a6 100644 --- a/sound/soc/intel/sst-firmware.c +++ b/sound/soc/intel/sst-firmware.c | |||
| @@ -706,6 +706,7 @@ static int block_alloc_fixed(struct sst_dsp *dsp, struct sst_block_allocator *ba | |||
| 706 | struct list_head *block_list) | 706 | struct list_head *block_list) |
| 707 | { | 707 | { |
| 708 | struct sst_mem_block *block, *tmp; | 708 | struct sst_mem_block *block, *tmp; |
| 709 | struct sst_block_allocator ba_tmp = *ba; | ||
| 709 | u32 end = ba->offset + ba->size, block_end; | 710 | u32 end = ba->offset + ba->size, block_end; |
| 710 | int err; | 711 | int err; |
| 711 | 712 | ||
| @@ -730,9 +731,9 @@ static int block_alloc_fixed(struct sst_dsp *dsp, struct sst_block_allocator *ba | |||
| 730 | if (ba->offset >= block->offset && ba->offset < block_end) { | 731 | if (ba->offset >= block->offset && ba->offset < block_end) { |
| 731 | 732 | ||
| 732 | /* align ba to block boundary */ | 733 | /* align ba to block boundary */ |
| 733 | ba->size -= block_end - ba->offset; | 734 | ba_tmp.size -= block_end - ba->offset; |
| 734 | ba->offset = block_end; | 735 | ba_tmp.offset = block_end; |
| 735 | err = block_alloc_contiguous(dsp, ba, block_list); | 736 | err = block_alloc_contiguous(dsp, &ba_tmp, block_list); |
| 736 | if (err < 0) | 737 | if (err < 0) |
| 737 | return -ENOMEM; | 738 | return -ENOMEM; |
| 738 | 739 | ||
| @@ -767,10 +768,10 @@ static int block_alloc_fixed(struct sst_dsp *dsp, struct sst_block_allocator *ba | |||
| 767 | list_move(&block->list, &dsp->used_block_list); | 768 | list_move(&block->list, &dsp->used_block_list); |
| 768 | list_add(&block->module_list, block_list); | 769 | list_add(&block->module_list, block_list); |
| 769 | /* align ba to block boundary */ | 770 | /* align ba to block boundary */ |
| 770 | ba->size -= block_end - ba->offset; | 771 | ba_tmp.size -= block_end - ba->offset; |
| 771 | ba->offset = block_end; | 772 | ba_tmp.offset = block_end; |
| 772 | 773 | ||
| 773 | err = block_alloc_contiguous(dsp, ba, block_list); | 774 | err = block_alloc_contiguous(dsp, &ba_tmp, block_list); |
| 774 | if (err < 0) | 775 | if (err < 0) |
| 775 | return -ENOMEM; | 776 | return -ENOMEM; |
| 776 | 777 | ||
