X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=mm%2Fmadvise.c;h=93fb63e88b5ef505d196b722527f09827f54f32e;hb=19599304625b74c95bff318c735928eec668b1ca;hp=07427d3fcead169febeb41d852adcbe0c2139c8d;hpb=6eb59af580dcffc6f6982ac8ef6d27a1a5f26b27;p=deliverable%2Flinux.git diff --git a/mm/madvise.c b/mm/madvise.c index 07427d3fcead..93fb63e88b5e 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -707,10 +707,12 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) return error; write = madvise_need_mmap_write(behavior); - if (write) - down_write(¤t->mm->mmap_sem); - else + if (write) { + if (down_write_killable(¤t->mm->mmap_sem)) + return -EINTR; + } else { down_read(¤t->mm->mmap_sem); + } /* * If the interval [start,end) covers some unmapped address