提交 84d2f07e 编写于 作者: S Steve French

CIFS: cifs_writepages should not write beyond end of file

Signed-off-by: NDave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: NSteve French <sfrench@us.ibm.com>
上级 47c786e7
......@@ -1011,6 +1011,7 @@ static int cifs_writepages(struct address_space *mapping,
pgoff_t index;
int is_range = 0;
struct kvec iov[32];
int len;
int n_iov = 0;
pgoff_t next;
int nr_pages;
......@@ -1124,16 +1125,26 @@ static int cifs_writepages(struct address_space *mapping,
unlock_page(page);
break;
}
if (page_offset(page) >= mapping->host->i_size) {
done = 1;
unlock_page(page);
break;
}
/*
* BB can we get rid of this? pages are held by pvec
*/
page_cache_get(page);
len = min(mapping->host->i_size - page_offset(page),
(loff_t)PAGE_CACHE_SIZE);
/* reserve iov[0] for the smb header */
n_iov++;
iov[n_iov].iov_base = kmap(page);
iov[n_iov].iov_len = PAGE_CACHE_SIZE;
bytes_to_write += PAGE_CACHE_SIZE;
iov[n_iov].iov_len = len;
bytes_to_write += len;
if (first < 0) {
first = i;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册