lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 13 Mar 2009 15:46:35 +0100 From: Mikael Pettersson <mikpe@...uu.se> To: Andrew Malton <andrew.malton@...ntire.com> Cc: linux-kernel@...r.kernel.org Subject: Re: mixed protection flags for mmap() ? Andrew Malton writes: > A) I have a driver whcih (vm)allocates some space and writes data > from its device there: user processes (readers) mmap the region read- > only and to get at the data more quickly than using read(). Writing > has priority but flags are placed to warn readers where writing is > going on. Lke this (some details omitted): > > vma->vm_flags = VM_READ; > remap_vmalloc_range(vma,region,0) > > B) For improving synchronization between the running parts of this I > want to add a control section, which the readers can write to in > order to communicate what they're doing to each other and to the > writer (which is the driver itself). Abstractly it seems that this > control section should be "part of" being mmaped to the device... But > mmap() is dispatched to the driver with only one vma_area_struct, and > I need two because the flags are different (read, and read-write). > Logically, I want to split the vma then map the two sections > separately (checking that sizes match) and with different flags, > roughly like this : > > // map part1 of size size1 and part2 of size size2 > split_vma(vma->vm_mm, vma, vma->vm_start + size1, 0); > > vma->vm_flags = VM_READ|VM_WRITE; > remap_vmalloc_range(vma,part1,0) > > vma->vm_next->vm_flags = VM_READ; > remap_vmalloc_range(vma->vm_next,part2,0) > > I can't do this because split_vma is not exported. > > 1) If split_vma would work at this point, I'd consider a local patch > to export it. But does this work? The relevant lock in the mm seems > to be held right through the mmap callback.... but I am probably > missing something. > > 2) If it doesn't work, what is the right way to achieve (B)? > > A Malton > eSentire, Inc. Do multiple mmaps(), either using multiple fds (fd determines role) or multiple offsets on one fd (offset determines role). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists