diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2020-10-15 20:37:01 +0200 | 
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2020-10-15 20:37:01 +0200 | 
| commit | 62b31a045757eac81fed94b19df47418a0818528 (patch) | |
| tree | 285fda56df8304dff6ba929bad65ddfb4e4fd726 /fs/buffer.c | |
| parent | cc51d171776f3a6acb6828bad0b780a4cacf5423 (diff) | |
| parent | c27e08820bc6cb7d483a8d87589bdbbbf10f2306 (diff) | |
Merge branch 'for-5.10/core' into for-linus
- nonblocking read semantics fix for hid-debug
Diffstat (limited to 'fs/buffer.c')
| -rw-r--r-- | fs/buffer.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 061dd202979d..50bbc99e3d96 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1958,7 +1958,7 @@ iomap_to_bh(struct inode *inode, sector_t block, struct buffer_head *bh,  		 */  		set_buffer_new(bh);  		set_buffer_unwritten(bh); -		/* FALLTHRU */ +		fallthrough;  	case IOMAP_MAPPED:  		if ((iomap->flags & IOMAP_F_NEW) ||  		    offset >= i_size_read(inode)) @@ -3157,6 +3157,15 @@ int __sync_dirty_buffer(struct buffer_head *bh, int op_flags)  	WARN_ON(atomic_read(&bh->b_count) < 1);  	lock_buffer(bh);  	if (test_clear_buffer_dirty(bh)) { +		/* +		 * The bh should be mapped, but it might not be if the +		 * device was hot-removed. Not much we can do but fail the I/O. +		 */ +		if (!buffer_mapped(bh)) { +			unlock_buffer(bh); +			return -EIO; +		} +  		get_bh(bh);  		bh->b_end_io = end_buffer_write_sync;  		ret = submit_bh(REQ_OP_WRITE, op_flags, bh);  | 
