From: Michael Brown Date: Mon, 21 Apr 2025 17:55:30 +0000 (+0100) Subject: [uaccess] Remove redundant read_user() X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=04d0b2fdf9767fed690cdaaf36b4cd60c6bded02;p=thirdparty%2Fipxe.git [uaccess] Remove redundant read_user() Signed-off-by: Michael Brown --- diff --git a/src/arch/x86/interface/pxe/pxe_file.c b/src/arch/x86/interface/pxe/pxe_file.c index 64bc335f2..6bb9f525f 100644 --- a/src/arch/x86/interface/pxe/pxe_file.c +++ b/src/arch/x86/interface/pxe/pxe_file.c @@ -148,7 +148,7 @@ pxenv_file_select ( struct s_PXENV_FILE_SELECT *file_select ) { * */ static PXENV_EXIT_t pxenv_file_read ( struct s_PXENV_FILE_READ *file_read ) { - userptr_t buffer; + void *buffer; ssize_t len; DBG ( "PXENV_FILE_READ %d to %04x:%04x+%04x", file_read->FileHandle, @@ -157,8 +157,8 @@ static PXENV_EXIT_t pxenv_file_read ( struct s_PXENV_FILE_READ *file_read ) { buffer = real_to_virt ( file_read->Buffer.segment, file_read->Buffer.offset ); - if ( ( len = read_user ( file_read->FileHandle, buffer, 0, - file_read->BufferSize ) ) < 0 ) { + if ( ( len = read ( file_read->FileHandle, buffer, + file_read->BufferSize ) ) < 0 ) { file_read->Status = PXENV_STATUS ( len ); return PXENV_EXIT_FAILURE; } diff --git a/src/arch/x86/interface/syslinux/comboot_call.c b/src/arch/x86/interface/syslinux/comboot_call.c index d8c245757..15539ada5 100644 --- a/src/arch/x86/interface/syslinux/comboot_call.c +++ b/src/arch/x86/interface/syslinux/comboot_call.c @@ -410,7 +410,8 @@ static __asmcall __used void int22 ( struct i386_all_regs *ix86 ) { int len = ix86->regs.cx * COMBOOT_FILE_BLOCKSZ; int rc; fd_set fds; - userptr_t buf = real_to_virt ( ix86->segs.es, ix86->regs.bx ); + void *buf = real_to_virt ( ix86->segs.es, + ix86->regs.bx ); /* Wait for data ready to read */ FD_ZERO ( &fds ); @@ -418,7 +419,7 @@ static __asmcall __used void int22 ( struct i386_all_regs *ix86 ) { select ( &fds, 1 ); - rc = read_user ( fd, buf, 0, len ); + rc = read ( fd, buf, len ); if ( rc < 0 ) { DBG ( "COMBOOT: read failed\n" ); ix86->regs.si = 0; diff --git a/src/core/posix_io.c b/src/core/posix_io.c index 35b52beeb..9112798ec 100644 --- a/src/core/posix_io.c +++ b/src/core/posix_io.c @@ -254,15 +254,14 @@ int select ( fd_set *readfds, int wait ) { /** * Read data from file * - * @v buffer Data buffer - * @v offset Starting offset within data buffer - * @v len Maximum length to read + * @v buf Data buffer + * @v max_len Maximum length to read * @ret len Actual length read, or negative error number * * This call is non-blocking; if no data is available to read then * -EWOULDBLOCK will be returned. */ -ssize_t read_user ( int fd, userptr_t buffer, off_t offset, size_t max_len ) { +ssize_t read ( int fd, void *buf, size_t max_len ) { struct posix_file *file; struct io_buffer *iobuf; size_t len; @@ -281,7 +280,7 @@ ssize_t read_user ( int fd, userptr_t buffer, off_t offset, size_t max_len ) { len = iob_len ( iobuf ); if ( len > max_len ) len = max_len; - copy_to_user ( buffer, offset, iobuf->data, len ); + memcpy ( buf, iobuf->data, len ); iob_pull ( iobuf, len ); if ( ! iob_len ( iobuf ) ) { list_del ( &iobuf->list ); diff --git a/src/include/ipxe/posix_io.h b/src/include/ipxe/posix_io.h index 1a73b5e86..693e0ae34 100644 --- a/src/include/ipxe/posix_io.h +++ b/src/include/ipxe/posix_io.h @@ -10,7 +10,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include -#include /** Minimum file descriptor that will ever be allocated */ #define POSIX_FD_MIN ( 1 ) @@ -22,8 +21,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); typedef uint32_t fd_set; extern int open ( const char *uri_string ); -extern ssize_t read_user ( int fd, userptr_t buffer, - off_t offset, size_t len ); +extern ssize_t read ( int fd, void *buf, size_t len ); extern int select ( fd_set *readfds, int wait ); extern ssize_t fsize ( int fd ); extern int close ( int fd ); @@ -72,16 +70,4 @@ FD_ISSET ( int fd, fd_set *set ) { return ( *set & ( 1 << fd ) ); } -/** - * Read data from file - * - * @v fd File descriptor - * @v buf Data buffer - * @v len Maximum length to read - * @ret len Actual length read, or negative error number - */ -static inline ssize_t read ( int fd, void *buf, size_t len ) { - return read_user ( fd, virt_to_user ( buf ), 0, len ); -} - #endif /* _IPXE_POSIX_IO_H */