summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorSrinivasarao P <spathi@codeaurora.org>2017-12-26 19:12:47 +0530
committerSrinivasarao P <spathi@codeaurora.org>2017-12-26 19:13:02 +0530
commit00a5539a807c39d9051cf71056350b7615e4af21 (patch)
treeac47f357266b85c866f07bbc8b23a15ddfbe6105 /fs
parentf373da7543ac64952bc98652646712a694b942ac (diff)
parentf0b9d2d0acea78a0d77181974f94d595df58aa88 (diff)
Merge android-4.4.101 (f0b9d2d) into msm-4.4
* refs/heads/tmp-f0b9d2d Linux 4.4.101 mm/pagewalk.c: report holes in hugetlb ranges mm/page_ext.c: check if page_ext is not prepared mm: check the return value of lookup_page_ext for all call sites coda: fix 'kernel memory exposure attempt' in fsync mm/page_alloc.c: broken deferred calculation ipmi: fix unsigned long underflow ocfs2: should wait dio before inode lock in ocfs2_setattr() nvme: Fix memory order on async queue deletion arm64: fix dump_instr when PAN and UAO are in use serial: omap: Fix EFR write on RTS deassertion ima: do not update security.ima if appraisal status is not INTEGRITY_PASS net/sctp: Always set scope_id in sctp_inet6_skb_msgname fealnx: Fix building error on MIPS sctp: do not peel off an assoc from one netns to another one af_netlink: ensure that NLMSG_DONE never fails in dumps vlan: fix a use-after-free in vlan_device_event() bonding: discard lowest hash bit for 802.3ad layer3+4 netfilter/ipvs: clear ipvs_property flag when SKB net namespace changed tcp: do not mangle skb->cb[] in tcp_make_synack() Conflicts: mm/debug-pagealloc.c mm/page_ext.c mm/page_owner.c Change-Id: I551aff1b4c8a0d72f64a234abb8ac88990fbc9e5 Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/coda/upcall.c3
-rw-r--r--fs/ocfs2/file.c9
2 files changed, 8 insertions, 4 deletions
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c
index f6c6c8adbc01..7289f0a7670b 100644
--- a/fs/coda/upcall.c
+++ b/fs/coda/upcall.c
@@ -446,8 +446,7 @@ int venus_fsync(struct super_block *sb, struct CodaFid *fid)
UPARG(CODA_FSYNC);
inp->coda_fsync.VFid = *fid;
- error = coda_upcall(coda_vcp(sb), sizeof(union inputArgs),
- &outsize, inp);
+ error = coda_upcall(coda_vcp(sb), insize, &outsize, inp);
CODA_FREE(inp, insize);
return error;
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 1d738723a41a..501ecc4a1ac4 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -1166,6 +1166,13 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
}
size_change = S_ISREG(inode->i_mode) && attr->ia_valid & ATTR_SIZE;
if (size_change) {
+ /*
+ * Here we should wait dio to finish before inode lock
+ * to avoid a deadlock between ocfs2_setattr() and
+ * ocfs2_dio_end_io_write()
+ */
+ inode_dio_wait(inode);
+
status = ocfs2_rw_lock(inode, 1);
if (status < 0) {
mlog_errno(status);
@@ -1186,8 +1193,6 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
if (status)
goto bail_unlock;
- inode_dio_wait(inode);
-
if (i_size_read(inode) >= attr->ia_size) {
if (ocfs2_should_order_data(inode)) {
status = ocfs2_begin_ordered_truncate(inode,