]> git.kaiwu.me - nginx.git/commitdiff
Merge of r4404:
authorMaxim Dounin <mdounin@mdounin.ru>
Sun, 5 Feb 2012 19:25:24 +0000 (19:25 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Sun, 5 Feb 2012 19:25:24 +0000 (19:25 +0000)
Fixed sched_setaffinity(2) to correctly pass size.

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);
         }