vfs: call pipe_check before reviving select()
. select callback on close() on a pipe would falsely revive a read-select on the pipe . the extra pipe_check catches it . fixes the new import of the netbsd make in -j N mode (make jobs that communicate with pipes)
This commit is contained in:
		
							parent
							
								
									3f38115c7b
								
							
						
					
					
						commit
						013226c417
					
				@ -392,7 +392,16 @@ int count;			/* max number of processes to release */
 | 
			
		||||
		if (f->filp_count < 1 || !(f->filp_pipe_select_ops & selop) ||
 | 
			
		||||
		    f->filp_vno != vp)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		/* Do a pipe_check to see if we really want to callback this
 | 
			
		||||
		 * select; a close() doesn't always warrant it.
 | 
			
		||||
		 */
 | 
			
		||||
		if(pipe_check(f, op == VFS_READ ? READING : WRITING,
 | 
			
		||||
			f->filp_flags & ~O_NONBLOCK, 1, 1) == SUSPEND) {
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
		select_callback(f, selop);
 | 
			
		||||
 | 
			
		||||
		f->filp_pipe_select_ops &= ~selop;
 | 
			
		||||
	}
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user