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>] [day] [month] [year] [list]
Message-ID: <804dabb00810170007hacb0e97rdbd251664bb06de4@mail.gmail.com>
Date:	Fri, 17 Oct 2008 15:07:13 +0800
From:	"Peter Teoh" <htmldeveloper@...il.com>
To:	LKML <linux-kernel@...r.kernel.org>
Subject: How to get the PTE pointer for a linear address?

If I allocate kernel memory via alloc_page(GFP_KERNEL),  and convert
that struct page pointer to linear address via page_address(), how do
I derive the PTE pointer of that page?

Following the source code, I did the following:

        pgd_t *pgd = pgd_offset_k(address);

        if (pgd_none(*pgd)) {
                printk("no pgd ");
                return 0;
        }
        pud = pud_offset(pgd, address);
        if (pud_none(*pud)) {
                printk("no pud ");
                return 0;
        }
        pmd = pmd_offset(pud, address);
        if (pmd_none(*pmd)) {
                printk("no pmd ");
                return 0;
        }

        pte = pte_offset_map(pmd, address);

===============> and in between here, the PTE pointer is returned
(from pte_offset_map())?   And so the PTE structure (pte_t) should be
*pte?

        pte_unmap(pte);

I suspect something is not right?

Thanks.
-- 
Regards,
Peter Teoh
--
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