From: Stanislav Kinsbursky --- kernel/cpt/rst_files.c | 8 +++++++- mm/mlock.c | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/kernel/cpt/rst_files.c b/kernel/cpt/rst_files.c index 2330dae..979bf4b 100644 --- a/kernel/cpt/rst_files.c +++ b/kernel/cpt/rst_files.c @@ -807,8 +807,14 @@ static int fixup_file_flags(struct file *file, const struct cred *cred, if (file->f_flags != fi->cpt_flags) { eprintk_ctx("file %ld flags mismatch %08x %08x\n", (long)pos, file->f_flags, fi->cpt_flags); - if (set_nonblock) + if (set_nonblock) { eprintk_ctx("%s: O_NONBLOCK flags: 0x%x\n", __func__, set_nonblock); + if (fi->cpt_flags&FASYNC) { + eprintk_ctx("%s: fi->cpt_fown_fd: %d\n", __func__, fi->cpt_fown_fd); + if (file->f_op && file->f_op->fasync) + eprintk_ctx("%s: fasync: %pS\n", __func__, file->f_op->fasync); + } + } return -EINVAL; } } diff --git a/mm/mlock.c b/mm/mlock.c index dcff96a..df83612 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -407,8 +407,10 @@ static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev, if (newflags & VM_LOCKED) { ret = ub_locked_charge(mm, end - start); - if (ret < 0) + if (ret < 0) { + printk(KERN_ERR "%s: failed to charge %ld\n", __func__, end - start); goto out; + } } pgoff = vma->vm_pgoff + ((start - vma->vm_start) >> PAGE_SHIFT); @@ -421,14 +423,18 @@ static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev, if (start != vma->vm_start) { ret = split_vma(mm, vma, start, 1); - if (ret) + if (ret) { + printk(KERN_ERR "%s: failed to split (start)\n", __func__); goto out_uncharge; + } } if (end != vma->vm_end) { ret = split_vma(mm, vma, end, 0); - if (ret) + if (ret) { + printk(KERN_ERR "%s: failed to split (end)\n", __func__); goto out_uncharge; + } } success: @@ -449,8 +455,10 @@ success: if (lock) { vma->vm_flags = newflags; ret = __mlock_vma_pages_range(vma, start, end); - if (ret < 0) + if (ret < 0) { + printk(KERN_ERR "%s: failed to mlock\n", __func__); ret = __mlock_posix_error_return(ret); + } } else { munlock_vma_pages_range(vma, start, end); }