login
Login
/
Register
Search
Header Space
Forums
News
Jobs
Blogs
Features
Man Pages
Site
Home
»
Mailing list archives
»
linux-kernel
»
2007
»
November
»
17
Re: [PATCH 7/8] UML - add virt_to_pte
view
thread
Score:
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From:
Roel Kluin <12o3l@...>
To: Jeff Dike <jdike@...>
Cc: Andrew Morton <akpm@...>, LKML <linux-kernel@...>, uml-devel <user-mode-linux-devel@...>
Subject:
Re: [PATCH 7/8] UML - add virt_to_pte
Date: Saturday, November 17, 2007 - 6:50 am
Jeff Dike wrote:
quoted text
> Turn um_virt_to_phys into virt_to_pte, cleaning up a horrid interface. > > It's also made non-static and declared in pgtable.h because it'll be > needed when the stubs get a vma. > > Signed-off-by: Jeff Dike <jdike@linux.intel.com> > --- > arch/um/kernel/skas/uaccess.c | 56 +++++++++++++++++------------------------- > include/asm-um/pgtable.h | 3 ++ > 2 files changed, 26 insertions(+), 33 deletions(-) > > Index: linux-2.6.22/arch/um/kernel/skas/uaccess.c > =================================================================== > --- linux-2.6.22.orig/arch/um/kernel/skas/uaccess.c 2007-11-16 15:16:54.000000000 -0500 > +++ linux-2.6.22/arch/um/kernel/skas/uaccess.c 2007-11-16 15:40:25.000000000 -0500 > @@ -13,70 +13,60 @@ > #include "kern_util.h" > #include "os.h" > > -static void *um_virt_to_phys(struct task_struct *task, unsigned long addr, > - pte_t *pte_out) > +pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr) > { > pgd_t *pgd; > pud_t *pud; > pmd_t *pmd; > - pte_t *pte; > - pte_t ptent; > > - if (task->mm == NULL) > - return ERR_PTR(-EINVAL); > - pgd = pgd_offset(task->mm, addr); > + if (mm == NULL) > + return NULL; > + > + pgd = pgd_offset(mm, addr); > if (!pgd_present(*pgd)) > - return ERR_PTR(-EINVAL); > + return NULL; > > pud = pud_offset(pgd, addr); > if (!pud_present(*pud)) > - return ERR_PTR(-EINVAL); > + return NULL; > > pmd = pmd_offset(pud, addr); > if (!pmd_present(*pmd)) > - return ERR_PTR(-EINVAL); > - > - pte = pte_offset_kernel(pmd, addr); > - ptent = *pte; > - if (!pte_present(ptent)) > - return ERR_PTR(-EINVAL); > + return NULL; > > - if (pte_out != NULL) > - *pte_out = ptent; > - return (void *) (pte_val(ptent) & PAGE_MASK) + (addr & ~PAGE_MASK); > + return pte_offset_kernel(pmd, addr); > } > > -static unsigned long maybe_map(unsigned long virt, int is_write) > +static pte_t *maybe_map(unsigned long virt, int is_write) > { > - pte_t pte; > - int err; > + pte_t *pte = virt_to_pte(current->mm, virt); > + int err, dummy_code; > > - void *phys = um_virt_to_phys(current, virt, &pte); > - int dummy_code; > - > - if (IS_ERR(phys) || (is_write && !pte_write(pte))) { > + if ((pte == NULL) || !pte_present(*pte) || > + (is_write && !pte_write(*pte))) { > err = handle_page_fault(virt, 0, is_write, 1, &dummy_code); > if (err) > - return -1UL; > - phys = um_virt_to_phys(current, virt, NULL); > + return NULL; > + pte = virt_to_pte(current->mm, virt); > } > - if (IS_ERR(phys)) > - phys = (void *) -1; > + if (!pte_present(*pte)) > + pte = NULL;
shouldn't you check again for (pte == NULL)?
quoted text
> > - return (unsigned long) phys; > + return pte; > }
-
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PATCH 7/8] UML - add virt_to_pte
, Jeff Dike
, (Fri Nov 16, 5:42 pm)
Re: [PATCH 7/8] UML - add virt_to_pte
, Roel Kluin
, (Sat Nov 17, 6:50 am)
Re: [PATCH 7/8] UML - add virt_to_pte
, Jeff Dike
, (Sat Nov 17, 2:49 pm)
Navigation
Create content
Mailing list archives
Recent posts
Mail archive search
Enter your search terms.
all mailing lists
alsa-devel
dragonflybsd-bugs
dragonflybsd-commit
dragonflybsd-docs
dragonflybsd-kernel
dragonflybsd-submit
dragonflybsd-user
freebsd-announce
freebsd-bugs
freebsd-chat
freebsd-cluster
freebsd-current
freebsd-drivers
freebsd-embeded
freebsd-fs
freebsd-hackers
freebsd-hardware
freebsd-mobile
freebsd-net
freebsd-performance
freebsd-pf
freebsd-security
freebsd-security-notifications
freebsd-threads
git
git-commits-head
linux-activists
linux-arm
linux-ath5k-devel
linux-btrfs
linux-c-programming
linux-driver-devel
linux-ext4
linux-fsdevel
linux-ia64
linux-input
linux-kernel
linux-kernel-janitors
linux-kernel-mentors
linux-kernel-newbies
linux-kvm
linux-net
linux-netdev
linux-newbie
linux-nfs
linux-raid
linux-scsi
linux-security-module
linux-sparse
linux-usb
linux-usb-devel
madwifi-devel
netbsd-announce
netbsd-tech-kern
openbsd-announce
openbsd-bugs
openbsd-ipv6
openbsd-misc
openbsd-security-announce
openbsd-smp
openbsd-source-changes
openbsd-tech
openfabrics-general
openmoko-community
openmoko-devel
openmoko-kernel
reiserfs-devel
tux3
ucarp
Optionally limit your search to a specific mailing list.
advanced
Popular discussions
linux-kernel
:
Linus Torvalds
Linux 2.6.27-rc8
Rafael J. Wysocki
2.6.26-rc9-git12: Reported regressions from 2.6.25
Jarod Wilson
[PATCH 05/18] lirc driver for i2c-based IR receivers
Vladislav Bolkhovitin
Re: Integration of SCST in the mainstream Linux kernel
git
:
Andrew Morton
email address handling
Pierre Habouzit
Re: [RFC] Re: Convert 'git blame' to parse_options()
Linus Torvalds
Re: What's in git.git (stable), and Announcing GIT 1.4.4.3
Brian Gernhardt
Re: [FIXED PATCH] Make rebase save ORIG_HEAD if changing current branch
openbsd-misc
:
Leon Dippenaar
New tcp stack attack
Marco Peereboom
Re: Real men don't attack straw men
Richard Storm
MAXDSIZ 1GB memory limit for process
GVG GVG
ssh_exchange_identification: Connection closed by remote host
linux-netdev
:
Patrick McHardy
[NET_SCHED 00/04]: External SFQ classifiers/flow classifier
Arjan van de Ven
Re: [GIT]: Networking
Ingo Oeser
Re: [PATCH]: Third (final?) release of Sun Neptune driver
Linus Torvalds
Re: [GIT]: Networking
Latest forum posts
Add ext2 inode field
15 minutes ago
Linux kernel
the kernel how to power off the machine
10 hours ago
Linux kernel
struct gendisk via request_queue
12 hours ago
Linux kernel
usb mic not detected
15 hours ago
Applications and Utilities
page initialization during kernel initialization
1 day ago
Linux kernel
Read Transport Layer Data form network packets (tcp/ip)
2 days ago
Linux kernel
Getting blinking screen in Fedora 9
2 days ago
Linux general
Problem with kernel + libata
2 days ago
Linux kernel
How to detect usb device insertioin and removal event ?
3 days ago
Linux general
toshiba m30x-129 herbinaiton problem
3 days ago
Hardware
Show all forums...
Recent Tags
-rc8
Linux
Linus Torvalds
2.6.27-rc8
bugs
-rc
quote
2.6.27
Intel
more tags
Colocation donated by:
Who's online
There are currently
3 users
and
1328 guests
online.
Online users
Jeremy
kingneutron
zeekec
Syndicate
speck-geostationary