Revert "soundwire: stream: fix programming slave ports for non-continous port maps"
Subsystems (2)
PATCH 1/1 Revert "soundwire: stream: fix programming slave ports for non-continous port maps"
The prop->src_dpn_prop and prop.sink_dpn_prop is allocated for the _number_ of ports and it is forced as 0 index based.
The original code was correct while the change to walk the bits and use their position as index into the arrays is not correct.
For exmple we can have the prop.source_ports=0x2, which means we have one port, but the prop.src_dpn_prop[1] is accessing outside of the allocated memory.
This reverts commit 6fa78e9c41471fe43052cd6feba6eae1b0277ae3.
---
Hi,
The reverted patch causes major regression on soundwire causing all audio to fail.
Interestingly the patch is only in 6.10.8 and 6.10.9, not in mainline or linux-next.
soundwire sdw-master-0-1: Program transport params failed: -22 soundwire sdw-master-0-1: Program params failed: -22
SDW1-Playback: ASoC: error at snd_soc_link_prepare on SDW1-Playback: -22
Regards,
Peter
drivers/soundwire/stream.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/soundwire/stream.c +4 -4
@@ -1286,18 +1286,18 @@ struct sdw_dpn_prop *sdw_get_slave_dpn_prop(struct sdw_slave *slave, unsigned int port_num) {struct sdw_dpn_prop *dpn_prop; -unsigned long mask; +u8 num_ports;int i;if (direction ==SDW_DATA_DIR_TX ) { - mask = slave->prop.source_ports; + num_ports =hweight32 (slave->prop.source_ports); dpn_prop = slave->prop.src_dpn_prop; }else { - mask = slave->prop.sink_ports; + num_ports =hweight32 (slave->prop.sink_ports); dpn_prop = slave->prop.sink_dpn_prop; } -for_each_set_bit (i, &mask,32 ) { +for (i =0 ; i < num_ports; i++) {if (dpn_prop[i].num == port_num)return &dpn_prop[i]; }
Signature · 1 line
2.46.0
Hi,
Quoted 11 lines · Peter Ujfalusi
The
prop->src_dpn_propand prop.sink_dpn_prop is allocated for the _number_ of ports and it is forced as 0 index based.The original code was correct while the change to walk the bits and use their position as index into the arrays is not correct.
For exmple we can have the prop.source_ports=0x2, which means we have one port, but the prop.src_dpn_prop[1] is accessing outside of the allocated memory.
This reverts commit
6fa78e9c41471fe43052cd6feba6eae1b0277ae3.
I just noticed that Krzysztof already sent the revert patch but it is not picked up for stable-6.10.y
https://lore.kernel.org/lkml/[email protected]/
Quoted 47 lines
Cc [email protected] # 6.10.ySigned-off-by Peter Ujfalusi <[email protected]>---
Hi,The reverted patch causes major regression on soundwire causing all audio to fail.
Interestingly the patch is only in 6.10.8 and 6.10.9, not in mainline or linux-next.soundwire sdw-master-0-1: Program transport params failed: -22 soundwire sdw-master-0-1: Program params failed: -22
SDW1-Playback: ASoC: error atsnd_soc_link_prepareon SDW1-Playback: -22Regards,
Peterdrivers/soundwire/stream.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)drivers/soundwire/stream.c +4
-4@@ -1286,18 +1286,18 @@ struct sdw_dpn_prop *sdw_get_slave_dpn_prop(struct sdw_slave *slave, unsigned int port_num) {struct sdw_dpn_prop *dpn_prop; -unsigned long mask; +u8 num_ports;int i;if (direction ==SDW_DATA_DIR_TX ) { - mask = slave->prop.source_ports; + num_ports =hweight32 (slave->prop.source_ports); dpn_prop = slave->prop.src_dpn_prop; }else { - mask = slave->prop.sink_ports; + num_ports =hweight32 (slave->prop.sink_ports); dpn_prop = slave->prop.sink_dpn_prop; } -for_each_set_bit (i, &mask,32 ) { +for (i =0 ; i < num_ports; i++) {if (dpn_prop[i].num == port_num)return &dpn_prop[i]; }
Signature · 1 line
Péter
Greg KH
maintainerQuoted 13 lines · Péter Ujfalusi
Hi,
Quoted 10 lines · Peter Ujfalusi
The
prop->src_dpn_propand prop.sink_dpn_prop is allocated for the _number_ of ports and it is forced as 0 index based.The original code was correct while the change to walk the bits and use their position as index into the arrays is not correct.
For exmple we can have the prop.source_ports=0x2, which means we have one port, but the prop.src_dpn_prop[1] is accessing outside of the allocated memory.
Quoted 6 lines
Quoted 1 line
This reverts commit
6fa78e9c41471fe43052cd6feba6eae1b0277ae3.I just noticed that Krzysztof already sent the revert patch but it is not picked up for stable-6.10.y
Is this in Linus's tree yet? That's what we are waiting for.
Quoted 8 lines
Quoted 8 lines
Cc [email protected] # 6.10.ySigned-off-by Peter Ujfalusi <[email protected]>---
Hi,The reverted patch causes major regression on soundwire causing all audio to fail.
Interestingly the patch is only in 6.10.8 and 6.10.9, not in mainline or linux-next.
Really? Commit ab8d66d132bc ("soundwire: stream: fix programming slave ports for non-continous port maps") is in Linus's tree, why isn't it being reverted there first?
confused,
greg k-h
Quoted 8 lines · Greg KH
Quoted 3 lines · Péter Ujfalusi
Quoted 3 lines
The reverted patch causes major regression on soundwire causing all audio to fail.
Interestingly the patch is only in 6.10.8 and 6.10.9, not in mainline or linux-next.Really? Commit
ab8d66d132bc("soundwire: stream: fix programming slave ports for non-continous port maps") is in Linus's tree, why isn't it being reverted there first?
FWIW, the revert should land in mainline tomorrow afaics:
https://lore.kernel.org/all/ZuFcBcJztAgicjNt@vaman/
BTW, in case anyone cares: I think this is another report about the problem, this time with 6.6.y:
https://bugzilla.kernel.org/show_bug.cgi?id=219256
Ciao, Thorsten
Quoted 10 lines · Linux regression tracking (Thorsten Leemhuis)
Quoted 8 lines · Greg KH
Quoted 3 lines · Péter Ujfalusi
Quoted 3 lines
The reverted patch causes major regression on soundwire causing all audio to fail.
Interestingly the patch is only in 6.10.8 and 6.10.9, not in mainline or linux-next.Really? Commit
ab8d66d132bc("soundwire: stream: fix programming slave ports for non-continous port maps") is in Linus's tree, why isn't it being reverted there first?
Quoted 6 lines
FWIW, the revert should land in mainline tomorrow afaics:
https://lore.kernel.org/all/ZuFcBcJztAgicjNt@vaman/BTW, in case anyone cares: I think this is another report about the problem, this time with 6.6.y:
https://bugzilla.kernel.org/show_bug.cgi?id=219256
Revert has been applied to 6.6 and other stable kernel so this should be fixed now
Signature · 1 line
~Vinod
Quoted 14 lines · Greg KH
Quoted 13 lines · Péter Ujfalusi
Hi,
Quoted 10 lines · Peter Ujfalusi
The
prop->src_dpn_propand prop.sink_dpn_prop is allocated for the _number_ of ports and it is forced as 0 index based.The original code was correct while the change to walk the bits and use their position as index into the arrays is not correct.
For exmple we can have the prop.source_ports=0x2, which means we have one port, but the prop.src_dpn_prop[1] is accessing outside of the allocated memory.
Quoted 8 lines
Quoted 6 lines
Quoted 1 line
This reverts commit
6fa78e9c41471fe43052cd6feba6eae1b0277ae3.I just noticed that Krzysztof already sent the revert patch but it is not picked up for stable-6.10.y
Is this in Linus's tree yet? That's what we are waiting for.
Yes I was waiting for that as well, the pull request has been sent to Linus, this should be in his tree, hopefully tomorow..
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
Cc [email protected] # 6.10.ySigned-off-by Peter Ujfalusi <[email protected]>---
Hi,
Quoted 7 lines
Quoted 3 lines
Quoted 3 lines
The reverted patch causes major regression on soundwire causing all audio to fail.
Interestingly the patch is only in 6.10.8 and 6.10.9, not in mainline or linux-next.Really? Commit
ab8d66d132bc("soundwire: stream: fix programming slave ports for non-continous port maps") is in Linus's tree, why isn't it being reverted there first?
I guess Peter jumped the gun, I was planning to ask you once this is picked up Linus
Signature · 1 line
~Vinod
Quoted 20 lines · Vinod Koul
Quoted 19 lines · Greg KH
Quoted 18 lines · Péter Ujfalusi
Hi,
Quoted 11 lines · Peter Ujfalusi
The
prop->src_dpn_propand prop.sink_dpn_prop is allocated for the _number_ of ports and it is forced as 0 index based.The original code was correct while the change to walk the bits and use their position as index into the arrays is not correct.
For exmple we can have the prop.source_ports=0x2, which means we have one port, but the prop.src_dpn_prop[1] is accessing outside of the allocated memory.
This reverts commit
6fa78e9c41471fe43052cd6feba6eae1b0277ae3.I just noticed that Krzysztof already sent the revert patch but it is not picked up for stable-6.10.y
Quoted 6 lines
Quoted 3 lines
Quoted 1 line
Is this in Linus's tree yet? That's what we are waiting for.
Yes I was waiting for that as well, the pull request has been sent to Linus, this should be in his tree, hopefully tomorow..
It is in Linus's tree now. Greg would you like to drop commit 6fa78e9c41471fe43052cd6feba6eae1b0277ae3 or carry it and the revert...?
What is the usual process for you to handle reverts?
Signature · 1 line
~Vinod
Greg KH
maintainerQuoted 23 lines · Vinod Koul
Quoted 22 lines · Vinod Koul
Quoted 21 lines · Greg KH
Quoted 19 lines · Péter Ujfalusi
Hi,
Quoted 11 lines · Peter Ujfalusi
The
prop->src_dpn_propand prop.sink_dpn_prop is allocated for the _number_ of ports and it is forced as 0 index based.The original code was correct while the change to walk the bits and use their position as index into the arrays is not correct.
For exmple we can have the prop.source_ports=0x2, which means we have one port, but the prop.src_dpn_prop[1] is accessing outside of the allocated memory.
This reverts commit
6fa78e9c41471fe43052cd6feba6eae1b0277ae3.I just noticed that Krzysztof already sent the revert patch but it is not picked up for stable-6.10.y
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
Is this in Linus's tree yet? That's what we are waiting for.
Yes I was waiting for that as well, the pull request has been sent to Linus, this should be in his tree, hopefully tomorow..
It is in Linus's tree now. Greg would you like to drop commit
6fa78e9c41471fe43052cd6feba6eae1b0277ae3or carry it and the revert...?
I can not "drop" a commit that is already in a realease for obvious reasons :(
Quoted 1 line
What is the usual process for you to handle reverts?
We just take them like normal. What is the git id of the revert in Linus's tree?
thanks,
greg k-h
Quoted 11 lines · Greg KH
Quoted 9 lines · Vinod Koul
Quoted 5 lines
Quoted 2 lines
Is this in Linus's tree yet? That's what we are waiting for.
Yes I was waiting for that as well, the pull request has been sent to Linus, this should be in his tree, hopefully tomorow..
It is in Linus's tree now. Greg would you like to drop commit
6fa78e9c41471fe43052cd6feba6eae1b0277ae3or carry it and the revert...?
Quoted 7 lines
I can not "drop" a commit that is already in a realease for obvious reasons :(
Quoted 1 line
What is the usual process for you to handle reverts?
We just take them like normal. What is the git id of the revert in Linus's tree?
Sure, makes sense. It has been auto-picked so this is fine.
fwiw:ab8d66d132bc: soundwire: stream: fix programming slave ports for non-continous port maps
Thanks
Signature · 1 line
~Vinod