On Tue, 19 Aug 2025 03:22:24 -0700
Dimon Zhao <dimon.z...@nebula-matrix.com> wrote:

> +static int nbl_chan_setup_ops(struct nbl_channel_ops_tbl **chan_ops_tbl,
> +                           struct nbl_channel_mgt_leonis *chan_mgt_leonis)
> +{
> +     *chan_ops_tbl = rte_zmalloc("nbl_chan_ops_tbl", sizeof(struct 
> nbl_channel_ops_tbl), 0);
> +     if (!*chan_ops_tbl)
> +             return -ENOMEM;
> +
> +     NBL_CHAN_OPS_TBL_TO_OPS(*chan_ops_tbl) = &chan_ops;
> +     NBL_CHAN_OPS_TBL_TO_PRIV(*chan_ops_tbl) = chan_mgt_leonis;
> +
> +     chan_mgt_leonis->chan_mgt.msg_handler[NBL_CHAN_MSG_ACK].func = 
> nbl_chan_recv_ack_msg;
> +     chan_mgt_leonis->chan_mgt.msg_handler[NBL_CHAN_MSG_ACK].priv = 
> chan_mgt_leonis;
> +
> +     return 0;
> +}

I don't see the point of the ops table here?
You are allocating it in shared huge page memory; but it contains pointer to ops
table values that are function pointers. And due to ASLR function pointers are 
not
valid when using primary/secondary process.

Reply via email to