mirror of
https://github.com/ipxe/ipxe
synced 2026-02-14 02:31:26 +03:00
[uaccess] Add explicit casts to and from userptr_t where needed
Allow for the possibility of userptr_t becoming a pointer type by adding explicit casts where necessary. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -96,10 +96,10 @@ UACCESS_INLINE ( librm, phys_to_user ) ( unsigned long phys_addr ) {
|
|||||||
* identity-mapped.
|
* identity-mapped.
|
||||||
*/
|
*/
|
||||||
if ( sizeof ( physaddr_t ) > sizeof ( uint32_t ) )
|
if ( sizeof ( physaddr_t ) > sizeof ( uint32_t ) )
|
||||||
return phys_addr;
|
return ( ( userptr_t ) phys_addr );
|
||||||
|
|
||||||
/* In a 32-bit build, subtract virt_offset */
|
/* In a 32-bit build, subtract virt_offset */
|
||||||
return ( phys_addr - virt_offset );
|
return ( ( userptr_t ) ( phys_addr - virt_offset ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -111,7 +111,7 @@ UACCESS_INLINE ( librm, phys_to_user ) ( unsigned long phys_addr ) {
|
|||||||
*/
|
*/
|
||||||
static inline __always_inline unsigned long
|
static inline __always_inline unsigned long
|
||||||
UACCESS_INLINE ( librm, user_to_phys ) ( userptr_t userptr, off_t offset ) {
|
UACCESS_INLINE ( librm, user_to_phys ) ( userptr_t userptr, off_t offset ) {
|
||||||
unsigned long addr = ( userptr + offset );
|
unsigned long addr = ( ( unsigned long ) ( userptr + offset ) );
|
||||||
|
|
||||||
/* In a 64-bit build, any virtual address in the low 4GB is
|
/* In a 64-bit build, any virtual address in the low 4GB is
|
||||||
* directly usable as a physical address, since the low 4GB is
|
* directly usable as a physical address, since the low 4GB is
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||||||
#define EM_ALIGN ( 4 * 1024 )
|
#define EM_ALIGN ( 4 * 1024 )
|
||||||
|
|
||||||
/** Equivalent of NOWHERE for user pointers */
|
/** Equivalent of NOWHERE for user pointers */
|
||||||
#define UNOWHERE ( ~UNULL )
|
#define UNOWHERE ( ( userptr_t ) ~( ( intptr_t ) 0 ) )
|
||||||
|
|
||||||
/** An external memory block */
|
/** An external memory block */
|
||||||
struct external_memory {
|
struct external_memory {
|
||||||
|
|||||||
@@ -487,7 +487,7 @@ static inline int golan_provide_pages ( struct golan *golan , uint32_t pages
|
|||||||
next_page_addr += GOLAN_PAGE_SIZE ) {
|
next_page_addr += GOLAN_PAGE_SIZE ) {
|
||||||
addr = next_page_addr;
|
addr = next_page_addr;
|
||||||
if (GOLAN_PAGE_MASK & user_to_phys(addr, 0)) {
|
if (GOLAN_PAGE_MASK & user_to_phys(addr, 0)) {
|
||||||
DBGC (golan ,"Addr not Page alligned [%lx %lx]\n", user_to_phys(addr, 0), addr);
|
DBGC (golan ,"Addr not Page alligned [%lx]\n", user_to_phys(addr, 0));
|
||||||
}
|
}
|
||||||
mailbox->mblock.data[j] = USR_2_BE64_BUS(addr);
|
mailbox->mblock.data[j] = USR_2_BE64_BUS(addr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ UACCESS_INLINE ( linux, user_to_phys ) ( userptr_t userptr, off_t offset ) {
|
|||||||
* virtual address will suffice for the purpose of determining
|
* virtual address will suffice for the purpose of determining
|
||||||
* alignment.
|
* alignment.
|
||||||
*/
|
*/
|
||||||
return ( userptr + offset );
|
return ( ( unsigned long ) ( userptr + offset ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,7 +56,7 @@ static inline __always_inline userptr_t
|
|||||||
UACCESS_INLINE ( linux, phys_to_user ) ( physaddr_t phys_addr ) {
|
UACCESS_INLINE ( linux, phys_to_user ) ( physaddr_t phys_addr ) {
|
||||||
|
|
||||||
/* For symmetry with the stub user_to_phys() */
|
/* For symmetry with the stub user_to_phys() */
|
||||||
return phys_addr;
|
return ( ( userptr_t ) phys_addr );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline __always_inline userptr_t
|
static inline __always_inline userptr_t
|
||||||
|
|||||||
@@ -224,12 +224,12 @@ trivial_memchr_user ( userptr_t buffer, off_t offset, int c, size_t len ) {
|
|||||||
|
|
||||||
static inline __always_inline userptr_t
|
static inline __always_inline userptr_t
|
||||||
UACCESS_INLINE ( flat, phys_to_user ) ( unsigned long phys_addr ) {
|
UACCESS_INLINE ( flat, phys_to_user ) ( unsigned long phys_addr ) {
|
||||||
return phys_addr;
|
return ( ( userptr_t ) phys_addr );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline __always_inline unsigned long
|
static inline __always_inline unsigned long
|
||||||
UACCESS_INLINE ( flat, user_to_phys ) ( userptr_t userptr, off_t offset ) {
|
UACCESS_INLINE ( flat, user_to_phys ) ( userptr_t userptr, off_t offset ) {
|
||||||
return ( userptr + offset );
|
return ( ( unsigned long ) ( userptr + offset ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline __always_inline userptr_t
|
static inline __always_inline userptr_t
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/** Equivalent of NOWHERE for user pointers */
|
/** Equivalent of NOWHERE for user pointers */
|
||||||
#define UNOWHERE ( ~UNULL )
|
#define UNOWHERE ( ( userptr_t ) ~( ( intptr_t ) 0 ) )
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reallocate external memory
|
* Reallocate external memory
|
||||||
|
|||||||
Reference in New Issue
Block a user