[v2] sched: fix for incorrect alignment of bitmap, pipe and queue structs in subport
Checks
Commit Message
Big structures like bitmap, pipes and queues in subport are addressed
using offset of 'memory' field in subport structures. This means no other
variable should be added after 'memory' variable or else addressing of such
structs like bitmap etc. become incorrect.
Realigned tc_ov_enabled variable in subport structure.
Fixes: f5e60154ade ("sched: enable traffic class oversubscription conditionally")
Signed-off-by: Megha Ajmera <megha.ajmera@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
lib/sched/rte_sched.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Comments
07/02/2023 07:10, Megha Ajmera:
> Big structures like bitmap, pipes and queues in subport are addressed
> using offset of 'memory' field in subport structures. This means no other
> variable should be added after 'memory' variable or else addressing of such
> structs like bitmap etc. become incorrect.
>
> Realigned tc_ov_enabled variable in subport structure.
>
> Fixes: f5e60154ade ("sched: enable traffic class oversubscription conditionally")
>
> Signed-off-by: Megha Ajmera <megha.ajmera@intel.com>
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
I bet the impact is wrongly explained, but I don't want to look deeper.
Applied.
19/02/2023 23:40, Thomas Monjalon:
> 07/02/2023 07:10, Megha Ajmera:
> > Big structures like bitmap, pipes and queues in subport are addressed
> > using offset of 'memory' field in subport structures. This means no other
> > variable should be added after 'memory' variable or else addressing of such
> > structs like bitmap etc. become incorrect.
> >
> > Realigned tc_ov_enabled variable in subport structure.
> >
> > Fixes: f5e60154ade ("sched: enable traffic class oversubscription conditionally")
> >
> > Signed-off-by: Megha Ajmera <megha.ajmera@intel.com>
> > Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
>
> I bet the impact is wrongly explained, but I don't want to look deeper.
> Applied.
And I've added Cc: stable@dpdk.org that David and Cristian asked for.
@@ -202,6 +202,9 @@ struct rte_sched_subport {
uint32_t qsize_add[RTE_SCHED_QUEUES_PER_PIPE];
uint32_t qsize_sum;
+ /* TC oversubscription activation */
+ int tc_ov_enabled;
+
struct rte_sched_pipe *pipe;
struct rte_sched_queue *queue;
struct rte_sched_queue_extra *queue_extra;
@@ -210,8 +213,6 @@ struct rte_sched_subport {
struct rte_mbuf **queue_array;
uint8_t memory[0] __rte_cache_aligned;
- /* TC oversubscription activation */
- int tc_ov_enabled;
} __rte_cache_aligned;
struct rte_sched_port {