i2s: fix slab leak in i2s_buf_write()

A failed return value from i2s_write() requires that the
slab we allocated earlier be freed.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
Andrew Boie 2018-11-15 13:11:36 -08:00 committed by Anas Nashif
commit d5f464c62b
2 changed files with 12 additions and 2 deletions

View file

@ -98,7 +98,12 @@ Z_SYSCALL_HANDLER(i2s_buf_write, dev, buf, size)
Z_OOPS(ret);
}
return i2s_write((struct device *)dev, mem_block, size);
ret = i2s_write((struct device *)dev, mem_block, size);
if (ret != 0) {
k_mem_slab_free(tx_cfg->mem_slab, &mem_block);
}
return ret;
}
Z_SYSCALL_HANDLER(i2s_trigger, dev, dir, cmd)