mirror of
https://github.com/ipxe/ipxe
synced 2025-12-14 16:01:38 +03:00
[uaccess] Remove redundant read_user()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -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 ) {
|
static PXENV_EXIT_t pxenv_file_read ( struct s_PXENV_FILE_READ *file_read ) {
|
||||||
userptr_t buffer;
|
void *buffer;
|
||||||
ssize_t len;
|
ssize_t len;
|
||||||
|
|
||||||
DBG ( "PXENV_FILE_READ %d to %04x:%04x+%04x", file_read->FileHandle,
|
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,
|
buffer = real_to_virt ( file_read->Buffer.segment,
|
||||||
file_read->Buffer.offset );
|
file_read->Buffer.offset );
|
||||||
if ( ( len = read_user ( file_read->FileHandle, buffer, 0,
|
if ( ( len = read ( file_read->FileHandle, buffer,
|
||||||
file_read->BufferSize ) ) < 0 ) {
|
file_read->BufferSize ) ) < 0 ) {
|
||||||
file_read->Status = PXENV_STATUS ( len );
|
file_read->Status = PXENV_STATUS ( len );
|
||||||
return PXENV_EXIT_FAILURE;
|
return PXENV_EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -410,7 +410,8 @@ static __asmcall __used void int22 ( struct i386_all_regs *ix86 ) {
|
|||||||
int len = ix86->regs.cx * COMBOOT_FILE_BLOCKSZ;
|
int len = ix86->regs.cx * COMBOOT_FILE_BLOCKSZ;
|
||||||
int rc;
|
int rc;
|
||||||
fd_set fds;
|
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 */
|
/* Wait for data ready to read */
|
||||||
FD_ZERO ( &fds );
|
FD_ZERO ( &fds );
|
||||||
@@ -418,7 +419,7 @@ static __asmcall __used void int22 ( struct i386_all_regs *ix86 ) {
|
|||||||
|
|
||||||
select ( &fds, 1 );
|
select ( &fds, 1 );
|
||||||
|
|
||||||
rc = read_user ( fd, buf, 0, len );
|
rc = read ( fd, buf, len );
|
||||||
if ( rc < 0 ) {
|
if ( rc < 0 ) {
|
||||||
DBG ( "COMBOOT: read failed\n" );
|
DBG ( "COMBOOT: read failed\n" );
|
||||||
ix86->regs.si = 0;
|
ix86->regs.si = 0;
|
||||||
|
|||||||
@@ -254,15 +254,14 @@ int select ( fd_set *readfds, int wait ) {
|
|||||||
/**
|
/**
|
||||||
* Read data from file
|
* Read data from file
|
||||||
*
|
*
|
||||||
* @v buffer Data buffer
|
* @v buf Data buffer
|
||||||
* @v offset Starting offset within data buffer
|
* @v max_len Maximum length to read
|
||||||
* @v len Maximum length to read
|
|
||||||
* @ret len Actual length read, or negative error number
|
* @ret len Actual length read, or negative error number
|
||||||
*
|
*
|
||||||
* This call is non-blocking; if no data is available to read then
|
* This call is non-blocking; if no data is available to read then
|
||||||
* -EWOULDBLOCK will be returned.
|
* -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 posix_file *file;
|
||||||
struct io_buffer *iobuf;
|
struct io_buffer *iobuf;
|
||||||
size_t len;
|
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 );
|
len = iob_len ( iobuf );
|
||||||
if ( len > max_len )
|
if ( len > max_len )
|
||||||
len = max_len;
|
len = max_len;
|
||||||
copy_to_user ( buffer, offset, iobuf->data, len );
|
memcpy ( buf, iobuf->data, len );
|
||||||
iob_pull ( iobuf, len );
|
iob_pull ( iobuf, len );
|
||||||
if ( ! iob_len ( iobuf ) ) {
|
if ( ! iob_len ( iobuf ) ) {
|
||||||
list_del ( &iobuf->list );
|
list_del ( &iobuf->list );
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <ipxe/uaccess.h>
|
|
||||||
|
|
||||||
/** Minimum file descriptor that will ever be allocated */
|
/** Minimum file descriptor that will ever be allocated */
|
||||||
#define POSIX_FD_MIN ( 1 )
|
#define POSIX_FD_MIN ( 1 )
|
||||||
@@ -22,8 +21,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||||||
typedef uint32_t fd_set;
|
typedef uint32_t fd_set;
|
||||||
|
|
||||||
extern int open ( const char *uri_string );
|
extern int open ( const char *uri_string );
|
||||||
extern ssize_t read_user ( int fd, userptr_t buffer,
|
extern ssize_t read ( int fd, void *buf, size_t len );
|
||||||
off_t offset, size_t len );
|
|
||||||
extern int select ( fd_set *readfds, int wait );
|
extern int select ( fd_set *readfds, int wait );
|
||||||
extern ssize_t fsize ( int fd );
|
extern ssize_t fsize ( int fd );
|
||||||
extern int close ( int fd );
|
extern int close ( int fd );
|
||||||
@@ -72,16 +70,4 @@ FD_ISSET ( int fd, fd_set *set ) {
|
|||||||
return ( *set & ( 1 << fd ) );
|
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 */
|
#endif /* _IPXE_POSIX_IO_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user