42 lines
1.4 KiB
Diff
42 lines
1.4 KiB
Diff
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
|
|
|