Fix rtasd zombie on PowerMac G5
PATCH 1/1 Fix rtasd zombie on PowerMac G5
Hi !
The rtasd kernel thread would exit before daemoniz'ing itself if RTAS wasn't present (or if allocation of the buffer failed), thus leaving a zombie. This patch fixes it (and remove #if 0'ed code)
Please apply,
Ben.
===== arch/ppc64/kernel/rtasd.c 1.15 vs edited =====
arch/ppc64/kernel/rtasd.c +7 -11
@@ -347,6 +347,8 @@int event_scan =rtas_token ("event-scan" );int rc; +daemonize ("rtasd" ); +if (event_scan ==RTAS_UNKNOWN_SERVICE ||get_eventscan_parms () ==-1 ) goto error;
@@ -359,15 +361,9 @@/* We can use rtas_log_buf now */ no_more_logging =0 ; -DEBUG ("will sleep for %d jiffies\n" , (HZ *60 /rtas_event_scan_rate) /2 ); - -daemonize ("rtasd" ); +printk (KERN_ERR "RTAS daemon started\n" ); -#if 0 -/* Rusty unreal time task */ - current->policy =SCHED_FIFO ; - current->nice =sys_sched_get_priority_max (SCHED_FIFO ) +1 ; -#endif +DEBUG ("will sleep for %d jiffies\n" , (HZ *60 /rtas_event_scan_rate) /2 );/* See if we have any error stored in NVRAM */ memset (logdata,0 , rtas_error_log_max);
@@ -423,7 +419,9 @@ goto repeat; error_vfree: -vfree (rtas_log_buf); +if (rtas_log_buf) +vfree (rtas_log_buf); + rtas_log_buf =NULL ; error:/* Should delete proc entries */ return -EINVAL ;
@@ -450,8 +448,6 @@if (kernel_thread (rtasd,0 ,CLONE_FS ) <0 )printk (KERN_ERR "Failed to start RTAS daemon\n" ); - -printk (KERN_ERR "RTAS daemon started\n" );/* Make room for the sequence number */ rtas_error_log_buffer_max = rtas_error_log_max +sizeof (int );