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]
Message-ID: <alpine.DEB.2.00.1106201830260.17005@justus.melware.de>
Date:	Mon, 20 Jun 2011 18:38:20 +0200 (CEST)
From:	Armin Schindler <armin@...ware.de>
To:	Linux Kernel Mailinglist <linux-kernel@...r.kernel.org>
Subject: Re: Map PCI resource to user space problem.

On Mon, 20 Jun 2011, Armin Schindler wrote:
> Hello,
>
> when I try to map PCI resource of size < PAGE_SIZE to user space
> with e.g. remap_pfn_range() the mapping seems to be created,
> but the access to the PCI device just doesn't work (read returns 0xff).
>
> The same happens when using sysfs. The device has
> # ls -al /sys/bus/pci/devices/0000\:02\:09.0/resource*
> -rw------- 1 root root     512 Jun 20 11:33 
> /sys/bus/pci/devices/0000:02:09.0/resource0
> -rw------- 1 root root     256 Jun 20 11:33 
> /sys/bus/pci/devices/0000:02:09.0/resource1
> -rw------- 1 root root 8388608 Jun 20 11:33 
> /sys/bus/pci/devices/0000:02:09.0/resource2
> -rw------- 1 root root  262144 Jun 20 11:33 
> /sys/bus/pci/devices/0000:02:09.0/resource3
>
> and when I mmap() resource0, a valid address is returned, but reading the 
> area always returns 0xff.
>
> Since a kernel driver can access resource0 here without problems when using
> ioremap(), I'm not sure what is wrong with the sysfs entry for user space
> (or using remap_pfn_range() in own mmap function).
> The only hint I have so far is the size, which is smaller than PAGE_SIZE.

I found the reason. It is not the size of the resource.
The resource0 is assigned to a not page-aligned address.
Example, the pci resource0 has address 0xfe5ffc00. mmap()ing it will
actually seems to map address 0xfe5ff000 and the user needs to add 0xc00 to 
the address returned by mmap().

Armin

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