Hello,

I found out that some code does madvise(MADV_DONTNEED) on the
allocated memory.  I think that this unmaps the memory from the user
space process.  If the process touches the memory again, a COW mapping
or even a new, zeroed out page is mapped in the process.  Either way,
the relation between the physical page, where the data from the RDMA
read ends up and the virtual page is broken.

I realize that calling madvise(MADV_DONTNEED) doesn’t have any meaning
for RDMA-registered memory.  I feel however that my observed behavior
is a bug and one of the following should happen:
. madvise() on pinned memory/I/O memory should fail, i.e. return EINVAL,
 EIO or ENOMEM (I didn’t test what happens when you call 
madvise(MADV_DONTNEED) on I/O mem.)
. RDMA actions on madvise()’d memory should fail.

Best regards,
Hannes Weisbach--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to