mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	proc/vmcore: fix signedness bug in read_from_oldmem()
The bug is the error handling:
	if (tmp < nr_bytes) {
"tmp" can hold negative error codes but because "nr_bytes" is type size_t
the negative error codes are treated as very high positive values
(success).  Fix this by changing "nr_bytes" to type ssize_t.  The
"nr_bytes" variable is used to store values between 1 and PAGE_SIZE and
they can fit in ssize_t without any issue.
Link: https://lkml.kernel.org/r/b55f7eed-1c65-4adc-95d1-6c7c65a54a6e@moroto.mountain
Fixes: 5d8de293c2 ("vmcore: convert copy_oldmem_page() to take an iov_iter")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									286812b041
								
							
						
					
					
						commit
						641db40f3a
					
				
					 1 changed files with 1 additions and 1 deletions
				
			
		|  | @ -132,7 +132,7 @@ ssize_t read_from_oldmem(struct iov_iter *iter, size_t count, | ||||||
| 			 u64 *ppos, bool encrypted) | 			 u64 *ppos, bool encrypted) | ||||||
| { | { | ||||||
| 	unsigned long pfn, offset; | 	unsigned long pfn, offset; | ||||||
| 	size_t nr_bytes; | 	ssize_t nr_bytes; | ||||||
| 	ssize_t read = 0, tmp; | 	ssize_t read = 0, tmp; | ||||||
| 	int idx; | 	int idx; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Dan Carpenter
						Dan Carpenter