mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 05:22:57 +00:00
[DDK]
Fix the definition of BYTES_TO_PAGES. While the macro might look overcomplicated, it actually needs to be this way to prevent integer overflows. svn path=/trunk/; revision=58738
This commit is contained in:
parent
4eb24ad42a
commit
12eabcde28
2 changed files with 38 additions and 34 deletions
|
@ -11248,36 +11248,38 @@ void __PREfastPagedCodeLocked(void);
|
||||||
|
|
||||||
/* ULONG
|
/* ULONG
|
||||||
* BYTE_OFFSET(
|
* BYTE_OFFSET(
|
||||||
* IN PVOID Va)
|
* _In_ PVOID Va)
|
||||||
*/
|
*/
|
||||||
#define BYTE_OFFSET(Va) \
|
#define BYTE_OFFSET(Va) \
|
||||||
((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
|
((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
|
||||||
|
|
||||||
/* ULONG
|
/* ULONG
|
||||||
* BYTES_TO_PAGES(
|
* BYTES_TO_PAGES(
|
||||||
* IN ULONG Size)
|
* _In_ ULONG Size)
|
||||||
|
*
|
||||||
|
* Note: This needs to be like this to avoid overflows!
|
||||||
*/
|
*/
|
||||||
#define BYTES_TO_PAGES(Size) \
|
#define BYTES_TO_PAGES(Size) \
|
||||||
(((Size) + PAGE_SIZE - 1) >> PAGE_SHIFT)
|
(((Size) >> PAGE_SHIFT) + (((Size) & (PAGE_SIZE - 1)) != 0))
|
||||||
|
|
||||||
/* PVOID
|
/* PVOID
|
||||||
* PAGE_ALIGN(
|
* PAGE_ALIGN(
|
||||||
* IN PVOID Va)
|
* _In_ PVOID Va)
|
||||||
*/
|
*/
|
||||||
#define PAGE_ALIGN(Va) \
|
#define PAGE_ALIGN(Va) \
|
||||||
((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
|
((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
|
||||||
|
|
||||||
/* ULONG_PTR
|
/* ULONG_PTR
|
||||||
* ROUND_TO_PAGES(
|
* ROUND_TO_PAGES(
|
||||||
* IN ULONG_PTR Size)
|
* _In_ ULONG_PTR Size)
|
||||||
*/
|
*/
|
||||||
#define ROUND_TO_PAGES(Size) \
|
#define ROUND_TO_PAGES(Size) \
|
||||||
(((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
|
(((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
|
||||||
|
|
||||||
/* ULONG
|
/* ULONG
|
||||||
* ADDRESS_AND_SIZE_TO_SPAN_PAGES(
|
* ADDRESS_AND_SIZE_TO_SPAN_PAGES(
|
||||||
* IN PVOID Va,
|
* _In_ PVOID Va,
|
||||||
* IN ULONG Size)
|
* _In_ ULONG Size)
|
||||||
*/
|
*/
|
||||||
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \
|
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \
|
||||||
((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
|
((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
|
||||||
|
@ -11289,7 +11291,7 @@ void __PREfastPagedCodeLocked(void);
|
||||||
/*
|
/*
|
||||||
* ULONG
|
* ULONG
|
||||||
* MmGetMdlByteCount(
|
* MmGetMdlByteCount(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmGetMdlByteCount(_Mdl) \
|
#define MmGetMdlByteCount(_Mdl) \
|
||||||
((_Mdl)->ByteCount)
|
((_Mdl)->ByteCount)
|
||||||
|
@ -11307,7 +11309,7 @@ void __PREfastPagedCodeLocked(void);
|
||||||
/*
|
/*
|
||||||
* PPFN_NUMBER
|
* PPFN_NUMBER
|
||||||
* MmGetMdlPfnArray(
|
* MmGetMdlPfnArray(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmGetMdlPfnArray(_Mdl) \
|
#define MmGetMdlPfnArray(_Mdl) \
|
||||||
((PPFN_NUMBER) ((_Mdl) + 1))
|
((PPFN_NUMBER) ((_Mdl) + 1))
|
||||||
|
@ -11315,7 +11317,7 @@ void __PREfastPagedCodeLocked(void);
|
||||||
/*
|
/*
|
||||||
* PVOID
|
* PVOID
|
||||||
* MmGetMdlVirtualAddress(
|
* MmGetMdlVirtualAddress(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmGetMdlVirtualAddress(_Mdl) \
|
#define MmGetMdlVirtualAddress(_Mdl) \
|
||||||
((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
|
((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
|
||||||
|
@ -11324,7 +11326,7 @@ void __PREfastPagedCodeLocked(void);
|
||||||
#define MmLockPagableCodeSection(Address) MmLockPagableDataSection(Address)
|
#define MmLockPagableCodeSection(Address) MmLockPagableDataSection(Address)
|
||||||
|
|
||||||
/* PVOID MmGetSystemAddressForMdl(
|
/* PVOID MmGetSystemAddressForMdl(
|
||||||
* IN PMDL Mdl);
|
* _In_ PMDL Mdl);
|
||||||
*/
|
*/
|
||||||
#define MmGetSystemAddressForMdl(Mdl) \
|
#define MmGetSystemAddressForMdl(Mdl) \
|
||||||
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
|
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
|
||||||
|
@ -11334,8 +11336,8 @@ void __PREfastPagedCodeLocked(void);
|
||||||
|
|
||||||
/* PVOID
|
/* PVOID
|
||||||
* MmGetSystemAddressForMdlSafe(
|
* MmGetSystemAddressForMdlSafe(
|
||||||
* IN PMDL Mdl,
|
* _In_ PMDL Mdl,
|
||||||
* IN MM_PAGE_PRIORITY Priority)
|
* _In_ MM_PAGE_PRIORITY Priority)
|
||||||
*/
|
*/
|
||||||
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
|
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
|
||||||
(((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
|
(((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
|
||||||
|
@ -11347,9 +11349,9 @@ void __PREfastPagedCodeLocked(void);
|
||||||
/*
|
/*
|
||||||
* VOID
|
* VOID
|
||||||
* MmInitializeMdl(
|
* MmInitializeMdl(
|
||||||
* IN PMDL MemoryDescriptorList,
|
* _In_ PMDL MemoryDescriptorList,
|
||||||
* IN PVOID BaseVa,
|
* _In_ PVOID BaseVa,
|
||||||
* IN SIZE_T Length)
|
* _In_ SIZE_T Length)
|
||||||
*/
|
*/
|
||||||
#define MmInitializeMdl(_MemoryDescriptorList, \
|
#define MmInitializeMdl(_MemoryDescriptorList, \
|
||||||
_BaseVa, \
|
_BaseVa, \
|
||||||
|
@ -11367,7 +11369,7 @@ void __PREfastPagedCodeLocked(void);
|
||||||
/*
|
/*
|
||||||
* VOID
|
* VOID
|
||||||
* MmPrepareMdlForReuse(
|
* MmPrepareMdlForReuse(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmPrepareMdlForReuse(_Mdl) \
|
#define MmPrepareMdlForReuse(_Mdl) \
|
||||||
{ \
|
{ \
|
||||||
|
|
|
@ -45,36 +45,38 @@ $if (_WDMDDK_)
|
||||||
|
|
||||||
/* ULONG
|
/* ULONG
|
||||||
* BYTE_OFFSET(
|
* BYTE_OFFSET(
|
||||||
* IN PVOID Va)
|
* _In_ PVOID Va)
|
||||||
*/
|
*/
|
||||||
#define BYTE_OFFSET(Va) \
|
#define BYTE_OFFSET(Va) \
|
||||||
((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
|
((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
|
||||||
|
|
||||||
/* ULONG
|
/* ULONG
|
||||||
* BYTES_TO_PAGES(
|
* BYTES_TO_PAGES(
|
||||||
* IN ULONG Size)
|
* _In_ ULONG Size)
|
||||||
|
*
|
||||||
|
* Note: This needs to be like this to avoid overflows!
|
||||||
*/
|
*/
|
||||||
#define BYTES_TO_PAGES(Size) \
|
#define BYTES_TO_PAGES(Size) \
|
||||||
(((Size) + PAGE_SIZE - 1) >> PAGE_SHIFT)
|
(((Size) >> PAGE_SHIFT) + (((Size) & (PAGE_SIZE - 1)) != 0))
|
||||||
|
|
||||||
/* PVOID
|
/* PVOID
|
||||||
* PAGE_ALIGN(
|
* PAGE_ALIGN(
|
||||||
* IN PVOID Va)
|
* _In_ PVOID Va)
|
||||||
*/
|
*/
|
||||||
#define PAGE_ALIGN(Va) \
|
#define PAGE_ALIGN(Va) \
|
||||||
((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
|
((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
|
||||||
|
|
||||||
/* ULONG_PTR
|
/* ULONG_PTR
|
||||||
* ROUND_TO_PAGES(
|
* ROUND_TO_PAGES(
|
||||||
* IN ULONG_PTR Size)
|
* _In_ ULONG_PTR Size)
|
||||||
*/
|
*/
|
||||||
#define ROUND_TO_PAGES(Size) \
|
#define ROUND_TO_PAGES(Size) \
|
||||||
(((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
|
(((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
|
||||||
|
|
||||||
/* ULONG
|
/* ULONG
|
||||||
* ADDRESS_AND_SIZE_TO_SPAN_PAGES(
|
* ADDRESS_AND_SIZE_TO_SPAN_PAGES(
|
||||||
* IN PVOID Va,
|
* _In_ PVOID Va,
|
||||||
* IN ULONG Size)
|
* _In_ ULONG Size)
|
||||||
*/
|
*/
|
||||||
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \
|
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \
|
||||||
((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
|
((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
|
||||||
|
@ -86,7 +88,7 @@ $if (_WDMDDK_)
|
||||||
/*
|
/*
|
||||||
* ULONG
|
* ULONG
|
||||||
* MmGetMdlByteCount(
|
* MmGetMdlByteCount(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmGetMdlByteCount(_Mdl) \
|
#define MmGetMdlByteCount(_Mdl) \
|
||||||
((_Mdl)->ByteCount)
|
((_Mdl)->ByteCount)
|
||||||
|
@ -104,7 +106,7 @@ $if (_WDMDDK_)
|
||||||
/*
|
/*
|
||||||
* PPFN_NUMBER
|
* PPFN_NUMBER
|
||||||
* MmGetMdlPfnArray(
|
* MmGetMdlPfnArray(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmGetMdlPfnArray(_Mdl) \
|
#define MmGetMdlPfnArray(_Mdl) \
|
||||||
((PPFN_NUMBER) ((_Mdl) + 1))
|
((PPFN_NUMBER) ((_Mdl) + 1))
|
||||||
|
@ -112,7 +114,7 @@ $if (_WDMDDK_)
|
||||||
/*
|
/*
|
||||||
* PVOID
|
* PVOID
|
||||||
* MmGetMdlVirtualAddress(
|
* MmGetMdlVirtualAddress(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmGetMdlVirtualAddress(_Mdl) \
|
#define MmGetMdlVirtualAddress(_Mdl) \
|
||||||
((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
|
((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
|
||||||
|
@ -121,7 +123,7 @@ $if (_WDMDDK_)
|
||||||
#define MmLockPagableCodeSection(Address) MmLockPagableDataSection(Address)
|
#define MmLockPagableCodeSection(Address) MmLockPagableDataSection(Address)
|
||||||
|
|
||||||
/* PVOID MmGetSystemAddressForMdl(
|
/* PVOID MmGetSystemAddressForMdl(
|
||||||
* IN PMDL Mdl);
|
* _In_ PMDL Mdl);
|
||||||
*/
|
*/
|
||||||
#define MmGetSystemAddressForMdl(Mdl) \
|
#define MmGetSystemAddressForMdl(Mdl) \
|
||||||
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
|
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
|
||||||
|
@ -131,8 +133,8 @@ $if (_WDMDDK_)
|
||||||
|
|
||||||
/* PVOID
|
/* PVOID
|
||||||
* MmGetSystemAddressForMdlSafe(
|
* MmGetSystemAddressForMdlSafe(
|
||||||
* IN PMDL Mdl,
|
* _In_ PMDL Mdl,
|
||||||
* IN MM_PAGE_PRIORITY Priority)
|
* _In_ MM_PAGE_PRIORITY Priority)
|
||||||
*/
|
*/
|
||||||
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
|
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
|
||||||
(((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
|
(((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
|
||||||
|
@ -144,9 +146,9 @@ $if (_WDMDDK_)
|
||||||
/*
|
/*
|
||||||
* VOID
|
* VOID
|
||||||
* MmInitializeMdl(
|
* MmInitializeMdl(
|
||||||
* IN PMDL MemoryDescriptorList,
|
* _In_ PMDL MemoryDescriptorList,
|
||||||
* IN PVOID BaseVa,
|
* _In_ PVOID BaseVa,
|
||||||
* IN SIZE_T Length)
|
* _In_ SIZE_T Length)
|
||||||
*/
|
*/
|
||||||
#define MmInitializeMdl(_MemoryDescriptorList, \
|
#define MmInitializeMdl(_MemoryDescriptorList, \
|
||||||
_BaseVa, \
|
_BaseVa, \
|
||||||
|
@ -164,7 +166,7 @@ $if (_WDMDDK_)
|
||||||
/*
|
/*
|
||||||
* VOID
|
* VOID
|
||||||
* MmPrepareMdlForReuse(
|
* MmPrepareMdlForReuse(
|
||||||
* IN PMDL Mdl)
|
* _In_ PMDL Mdl)
|
||||||
*/
|
*/
|
||||||
#define MmPrepareMdlForReuse(_Mdl) \
|
#define MmPrepareMdlForReuse(_Mdl) \
|
||||||
{ \
|
{ \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue