m_out is shared between threads as the reply message, and it can happen results get overwritten by another thread before the reply is sent. This change . makes m_out local to the message handling function, declared on the stack of the caller . forces callers of reply() to give it a message, or declare the reply message has no significant fields except for the return code by calling replycode() Change-Id: Id06300083a63c72c00f34f86a5c7d96e4bbdf9f6
		
			
				
	
	
		
			22 lines
		
	
	
		
			682 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			682 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* This file is the counterpart of "read.c".  It contains the code for writing
 | 
						|
 * insofar as this is not contained in read_write().
 | 
						|
 *
 | 
						|
 * The entry points into this file are
 | 
						|
 *   do_write:     call read_write to perform the WRITE system call
 | 
						|
 */
 | 
						|
 | 
						|
#include "fs.h"
 | 
						|
#include "file.h"
 | 
						|
#include "param.h"
 | 
						|
 | 
						|
 | 
						|
/*===========================================================================*
 | 
						|
 *				do_write				     *
 | 
						|
 *===========================================================================*/
 | 
						|
int do_write(message *UNUSED(m_out))
 | 
						|
{
 | 
						|
/* Perform the write(fd, buffer, nbytes) system call. */
 | 
						|
  return(do_read_write_peek(WRITING, job_m_in.fd,
 | 
						|
  	job_m_in.buffer, (size_t) job_m_in.nbytes));
 | 
						|
}
 |