Refreshed all patches. Remove upstreamed: - 551-loop-Better-discard-support-for-block-devices.patch Fixed: - CVE-2020-11884 - CVE-2020-12114 - CVE-2019-3016 - CVE-2020-11669 Compile-tested on: cns3xxx Runtime-tested on: cns3xxx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 2e864386e62e702a343be2507062ee08d5dfc810 Mon Sep 17 00:00:00 2001
 | |
| From: Evan Green <evgreen@chromium.org>
 | |
| Date: Thu, 14 Nov 2019 15:50:07 -0800
 | |
| Subject: loop: Report EOPNOTSUPP properly
 | |
| 
 | |
| Properly plumb out EOPNOTSUPP from loop driver operations, which may
 | |
| get returned when for instance a discard operation is attempted but not
 | |
| supported by the underlying block device. Before this change, everything
 | |
| was reported in the log as an I/O error, which is scary and not
 | |
| helpful in debugging.
 | |
| 
 | |
| Signed-off-by: Evan Green <evgreen@chromium.org>
 | |
| Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
 | |
| Reviewed-by: Bart Van Assche <bvanassche@acm.org>
 | |
| ---
 | |
|  drivers/block/loop.c | 7 +++++--
 | |
|  1 file changed, 5 insertions(+), 2 deletions(-)
 | |
| 
 | |
| --- a/drivers/block/loop.c
 | |
| +++ b/drivers/block/loop.c
 | |
| @@ -461,7 +461,7 @@ static void lo_complete_rq(struct reques
 | |
|  	if (!cmd->use_aio || cmd->ret < 0 || cmd->ret == blk_rq_bytes(rq) ||
 | |
|  	    req_op(rq) != REQ_OP_READ) {
 | |
|  		if (cmd->ret < 0)
 | |
| -			ret = BLK_STS_IOERR;
 | |
| +			ret = errno_to_blk_status(cmd->ret);
 | |
|  		goto end_io;
 | |
|  	}
 | |
|  
 | |
| @@ -1924,7 +1924,10 @@ static void loop_handle_cmd(struct loop_
 | |
|   failed:
 | |
|  	/* complete non-aio request */
 | |
|  	if (!cmd->use_aio || ret) {
 | |
| -		cmd->ret = ret ? -EIO : 0;
 | |
| +		if (ret == -EOPNOTSUPP)
 | |
| +			cmd->ret = ret;
 | |
| +		else
 | |
| +			cmd->ret = ret ? -EIO : 0;
 | |
|  		blk_mq_complete_request(rq);
 | |
|  	}
 | |
|  }
 |