diff --git a/fs/buffer.c b/fs/buffer.c index af88734d1d38b192e74d8c3721a6362a5042e122..0a813fad9002898315c001c6f31db52378d48c45 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2037,6 +2037,9 @@ static int __block_commit_write(struct inode *inode, struct page *page, unsigned blocksize; struct buffer_head *bh, *head; + if (!page_private(page)) + return 0; + bh = head = page_buffers(page); blocksize = bh->b_size; diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 35033bb431495df8df02d077e1be224684ff55f0..6c3e5aedc2ca15f4958004eb2f61174c86e1bedf 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3155,6 +3155,9 @@ static int ext4_da_write_end(struct file *file, if (unlikely(copied < len) && !PageUptodate(page)) copied = 0; + if (unlikely(!page_private(page))) + return -EIO; + start = pos & (PAGE_SIZE - 1); end = start + copied - 1;