| childinfo_t is a union that contains both signed (error) and unsigned |
| (threadid) members. Thus a large threadid could appear as a negative error |
| value, which will cause unexpected failures. |
| |
| childinfo_t should be changed to a struct, but it could potentially affect the |
| performance. So we keep it as a union but only check error against -1. There is |
| still a chance of false alarm but it's small. |
| |
| Upstream-Status: Pending |
| |
| Signed-off-by: Song.Li <Song.Li@windriver.com> |
| Signed-off-by: Jesse Zhang <sen.zhang@windriver.com> |
| --- |
| src/hackbench/hackbench.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/src/hackbench/hackbench.c b/src/hackbench/hackbench.c |
| index 8baeb23..dc0de8f 100644 |
| --- a/src/hackbench/hackbench.c |
| +++ b/src/hackbench/hackbench.c |
| @@ -317,7 +317,7 @@ static unsigned int group(childinfo_t *child, |
| ctx->wakefd = wakefd; |
| |
| child[tab_offset+i] = create_worker(ctx, (void *)(void *)receiver); |
| - if( child[tab_offset+i].error < 0 ) { |
| + if( child[tab_offset+i].error == -1 ) { |
| return (i > 0 ? i-1 : 0); |
| } |
| snd_ctx->out_fds[i] = fds[1]; |
| @@ -332,7 +332,7 @@ static unsigned int group(childinfo_t *child, |
| snd_ctx->num_fds = num_fds; |
| |
| child[tab_offset+num_fds+i] = create_worker(snd_ctx, (void *)(void *)sender); |
| - if( child[tab_offset+num_fds+i].error < 0 ) { |
| + if( child[tab_offset+num_fds+i].error == -1 ) { |
| return (num_fds+i)-1; |
| } |
| } |
| -- |
| 1.7.9.5 |
| |