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] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 18 Oct 2010 16:45:36 +0100
From:	Tom Brown <sa212+emis@...onix.com>
To:	LKML <linux-kernel@...r.kernel.org>
CC:	Stefan Richter <stefanr@...6.in-berlin.de>,
	Yong Zhang <yong.zhang@...driver.com>,
	Arnd Bergmann <arnd@...db.de>
Subject: Re: Question: how to copy to user space from a tasklet

On 15/10/2010 06:57, Stefan Richter wrote:

> One way would be to use mmap() to allocate the DMA buffer and insert it into
> the user address space before DMA commences.  An additional poll/read/write
> based protocol or so can be used for buffer management during DMA.

Thanks, think I'm there:

1 - The user calls mmap() with a specific offset to flag that he wants a 
DMA buffer

2 - I then 'vmalloc' the buffer, and call 'setPageReserved' for each page

I then step over each page, and:

3 - call 'vmalloc_to_pfn' to get a PFN for each page, and then

4 - call 'remap_page_range' for that page (I instead call 
'remap_pfn_range' for kernels >= 2.6.10, but I'm on 2.6.9)

This gives me the buffer, and the interrupt handler then just uses 
'memcpy' to copy data to the user.

I've got to say, this was incredibly hard work. I can't find any useful 
documentation and it can take a couple of hours on Google to write a few 
lines of code. LDD is next to useless. There's no 'vmalloc_to_pfn' on 
2.6.9, so I copied an old deprecated one from 2.6.10 (which was also in 
a kernel prior to 2.6.9, I think). I'm not yet convinced that all this 
is working; I think I've seen one instance when the 'memcpy' to the 
buffer didn't work, so I think there might potentially be a problem with 
setting the reserved bit (and isn't the reserved bit deprecated in 
2.6.15??)

On the other stuff, thanks Yong for the 'probe_kernel_' suggestion, but 
I can't find any documentation on it.

linux-newbie only had one thread on it for the entire month when I 
checked a couple of days ago, apart from a couple of 419 scams.

Thanks -

Tom
--
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