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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <18874.29131.187639.775744@pilspetsen.it.uu.se>
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ