> -----Original Message----- > From: linux-nfs-owner@xxxxxxxxxxxxxxx [mailto:linux-nfs- > owner@xxxxxxxxxxxxxxx] On Behalf Of Mark Young > Sent: Tuesday, August 27, 2013 5:17 PM > To: linux-nfs@xxxxxxxxxxxxxxx > Cc: Matt Craighead > Subject: Issue found with kernel/net/sunrpc/xdr.c > > I was pointed to this mailing list by Brian Fields. > > We're currently seeing NFS data corruption, which we traced back to > memory corruption that happens in the function _shift_data_right_pages in > net/sunrpc/xdr.c. > > When we see the issue, we're running a 32bit os with systems running with > more than 1GB of physical memory. The errant behavior appears to be that > two calls to kmap_atomic (on 32bit systems with highmem present) with the > same physical address (on addresses within highmem) will return two > different vaddrs. In our assessment, this confuses the memmove code into > thinking that the two addresses are non-overlapping in spite of the fact that > they are overlapping in physical space. This, in turn, results in corruption. > > A proposed solution to the problem would involve calling kmap_atomic only > once in the case that the pgfrom and pgto are identical, and then re-using > the resultant vaddr for both vto and vfrom. > > Any insight on the issue or the proposed solution would be greatly > appreciated. I'm fine with that solution. Mind sending a duly conformant patch w/ a signed-off-by line? Thanks Trond -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html