Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'fixes' of git://git.linux-nfs.org/pub/linux/nfs-2.6

* 'fixes' of git://git.linux-nfs.org/pub/linux/nfs-2.6:
NFS: Fix nfs_page use after free issues in fs/nfs/write.c
NFSv4: Fix incorrect semaphore release in _nfs4_do_open()
NFS: Fix Oopsable condition in nfs_readpage_sync()

+9 -7
+3 -3
fs/nfs/nfs4proc.c
··· 970 970 status = -ENOMEM; 971 971 opendata = nfs4_opendata_alloc(dentry, sp, flags, sattr); 972 972 if (opendata == NULL) 973 - goto err_put_state_owner; 973 + goto err_release_rwsem; 974 974 975 975 status = _nfs4_proc_open(opendata); 976 976 if (status != 0) ··· 989 989 return 0; 990 990 err_opendata_free: 991 991 nfs4_opendata_free(opendata); 992 + err_release_rwsem: 993 + up_read(&clp->cl_sem); 992 994 err_put_state_owner: 993 995 nfs4_put_state_owner(sp); 994 996 out_err: 995 - /* Note: clp->cl_sem must be released before nfs4_put_open_state()! */ 996 - up_read(&clp->cl_sem); 997 997 *res = NULL; 998 998 return status; 999 999 }
+4 -2
fs/nfs/read.c
··· 204 204 NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME; 205 205 spin_unlock(&inode->i_lock); 206 206 207 - nfs_readpage_truncate_uninitialised_page(rdata); 208 - if (rdata->res.eof || rdata->res.count == rdata->args.count) 207 + if (rdata->res.eof || rdata->res.count == rdata->args.count) { 209 208 SetPageUptodate(page); 209 + if (rdata->res.eof && count != 0) 210 + memclear_highpage_flush(page, rdata->args.pgbase, count); 211 + } 210 212 result = 0; 211 213 212 214 io_error:
+2 -2
fs/nfs/write.c
··· 590 590 req = nfs_list_entry(head->next); 591 591 nfs_list_remove_request(req); 592 592 nfs_inode_remove_request(req); 593 - nfs_clear_page_writeback(req); 594 593 dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); 594 + nfs_clear_page_writeback(req); 595 595 } 596 596 } 597 597 ··· 1386 1386 req = nfs_list_entry(head->next); 1387 1387 nfs_list_remove_request(req); 1388 1388 nfs_mark_request_commit(req); 1389 - nfs_clear_page_writeback(req); 1390 1389 dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); 1390 + nfs_clear_page_writeback(req); 1391 1391 } 1392 1392 return -ENOMEM; 1393 1393 }