On 8/18/20 1:36 AM, Vinod Koul wrote:
On 18-08-20, 01:47, Bard Liao wrote:
From: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>
The existing code allocates memory for the total number of ports.
This only works if the ports are contiguous, but will break if e.g. a
Devices uses port0, 1, and 14. The port_ready[] array would contain 3
elements, which would lead to an out-of-bounds access. Conversely in
other cases, the wrong port index would be used leading to timeouts on
prepare.
This can be fixed by allocating for the worst-case of 15
ports (DP0..DP14). In addition since the number is now fixed, we can
use an array instead of a dynamic allocation.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>
Reviewed-by: Rander Wang <rander.wang@xxxxxxxxxxxxxxx>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@xxxxxxxxxxxxxxx>
Signed-off-by: Bard Liao <yung-chuan.liao@xxxxxxxxxxxxxxx>
---
drivers/soundwire/mipi_disco.c | 18 +-----------------
drivers/soundwire/slave.c | 4 ++++
include/linux/soundwire/sdw.h | 2 +-
sound/soc/codecs/max98373-sdw.c | 15 +--------------
sound/soc/codecs/rt1308-sdw.c | 14 +-------------
sound/soc/codecs/rt5682-sdw.c | 15 +--------------
sound/soc/codecs/rt700-sdw.c | 15 +--------------
sound/soc/codecs/rt711-sdw.c | 15 +--------------
sound/soc/codecs/rt715-sdw.c | 33 +--------------------------------
This looks fine, but the asoc changes are not dependent, so maybe we
should split them up and then can go thru Mark. Or Mark acks, either way
would work for me
There are 3 dependencies that we tracked between SoundWire and ASoC
subsystems:
a) addition of SDCA control macro (needed before SDCA codec drivers can
be shared)
b) this series - we could indeed submit the codec changes to Mark's tree
separately, but then the SoundWire tree would be broken: the codec
drivers would still try to allocate dynamically what is now a fixed-size
array.
c) configuration of the interrupt masks in codec drivers instead of
hard-coded in bus driver + spurious parity error workaround (not posted
yet but ready).
The changes in ASoC codecs are really only on the initialization part
(either removing a dynamic allocation or setting masks), there's no
functional change otherwise.
I think the simplest to avoid multiple back-and-forth is to have these
small interface/initialization changes merged through the SoundWire
subsystem, then merged by Mark from a single immutable tag. Would this
work for everyone?
In addition, there's a WIP change to regmap to add support for SoundWire
1.2 MBQ-based register access, but this only affects regmap and ASoC
trees, all handled by Mark.
I don't think we have any other cross-tree changes planned for now, the
SDCA infrastructure plumbing is still rather open.