]> git.kaiwu.me - nginx.git/commitdiff
Fixed sched_setaffinity(2) to correctly pass size.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 16 Jan 2012 11:13:48 +0000 (11:13 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 16 Jan 2012 11:13:48 +0000 (11:13 +0000)
Second argument (cpusetsize) is size in bytes, not in bits.  Previously
used constant 32 resulted in reading of uninitialized memory and caused
EINVAL to be returned on some Linux kernels.

src/os/unix/ngx_process_cycle.c

index 863176facde4d3a4febe7bf166364bde7ca8cb3f..fbf18a5f24aead9a245c10fb2a3b8c15622e8636 100644 (file)
@@ -914,7 +914,10 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_uint_t priority)
         ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
                       "sched_setaffinity(0x%08Xl)", cpu_affinity);
 
-        if (sched_setaffinity(0, 32, (cpu_set_t *) &cpu_affinity) == -1) {
+        if (sched_setaffinity(0, sizeof(cpu_affinity),
+                              (cpu_set_t *) &cpu_affinity)
+            == -1)
+        {
             ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                           "sched_setaffinity(0x%08Xl) failed", cpu_affinity);
         }