chardev: Convert IO handlers to use unsigned type
Subsystems (9)
v2 cover chardev: Convert IO handlers to use unsigned type
Hi Paolo,
Here are the changes you suggested in
https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02294.html
First two simple cleanups while here,
then slowly convert backends then frontends.
Regards,
Phil.
Philippe Mathieu-Daudé (11):
hw/ipmi: Remove unnecessary declarations target/xtensa: Remove unnecessary declarations
chardev: Simplify IOWatchPoll::fd_can_read as a GSourceFunc
chardev: Assert backend's chr_can_read() is positive
chardev: Let chr_sync_read() use unsigned type
chardev: Let chr_write use unsigned type
chardev: Let IOReadHandler use unsigned type
chardev: Let IOCanReadHandler use unsigned type
chardev: Let qemu_chr_fe_* use unsigned type
chardev: Let qemu_chr_be_* use unsigned type
chardev: FDChardev::max_size be unsigned
backends/rng-egd.c | 6 +++--- chardev/baum.c | 2 +- chardev/char-fd.c | 8 ++++---- chardev/char-fe.c | 8 ++++---- chardev/char-io.c | 4 ++-- chardev/char-mux.c | 6 +++--- chardev/char-pty.c | 6 +++--- chardev/char-ringbuf.c | 4 ++-- chardev/char-socket.c | 10 +++++----- chardev/char-udp.c | 6 +++--- chardev/char-win-stdio.c | 2 +- chardev/char-win.c | 2 +- chardev/char.c | 20 ++++++++++++-------- chardev/msmouse.c | 2 +- chardev/spice.c | 2 +- chardev/testdev.c | 2 +- chardev/wctablet.c | 4 ++-- gdbstub.c | 6 +++--- hw/arm/pxa2xx.c | 4 ++-- hw/arm/strongarm.c | 5 +++-- hw/bt/hci-csr.c | 4 ++-- hw/char/bcm2835_aux.c | 4 ++-- hw/char/cadence_uart.c | 6 +++--- hw/char/cmsdk-apb-uart.c | 4 ++-- hw/char/digic-uart.c | 4 ++-- hw/char/escc.c | 8 ++++---- hw/char/etraxfs_ser.c | 4 ++-- hw/char/exynos4210_uart.c | 5 +++-- hw/char/grlib_apbuart.c | 4 ++-- hw/char/imx_serial.c | 4 ++-- hw/char/ipoctal232.c | 6 +++--- hw/char/lm32_juart.c | 4 ++-- hw/char/lm32_uart.c | 4 ++-- hw/char/mcf_uart.c | 4 ++-- hw/char/milkymist-uart.c | 4 ++-- hw/char/parallel.c | 2 +- hw/char/pl011.c | 6 +++--- hw/char/sclpconsole-lm.c | 4 ++-- hw/char/sclpconsole.c | 6 +++--- hw/char/serial.c | 8 ++++---- hw/char/sh_serial.c | 6 +++--- hw/char/spapr_vty.c | 6 +++--- hw/char/stm32f2xx_usart.c | 5 +++-- hw/char/terminal3270.c | 4 ++-- hw/char/virtio-console.c | 4 ++-- hw/char/xen_console.c | 4 ++-- hw/char/xilinx_uartlite.c | 4 ++-- hw/ipmi/ipmi_bmc_extern.c | 8 ++------ hw/misc/ivshmem.c | 6 +++--- hw/riscv/riscv_htif.c | 4 ++-- hw/riscv/sifive_uart.c | 4 ++-- hw/usb/ccid-card-passthru.c | 6 +++--- hw/usb/dev-serial.c | 4 ++-- hw/usb/redirect.c | 4 ++-- include/chardev/char-fd.h | 2 +- include/chardev/char-fe.h | 6 +++--- include/chardev/char-io.h | 2 +- include/chardev/char.h | 13 +++++++------ include/qemu/main-loop.h | 4 ++-- include/sysemu/replay.h | 8 ++++---- monitor.c | 6 +++--- net/colo-compare.c | 6 +++--- net/filter-mirror.c | 4 ++-- net/slirp.c | 4 ++-- qtest.c | 4 ++-- replay/replay-char.c | 8 ++++---- stubs/replay.c | 8 ++++---- target/xtensa/xtensa-semi.c | 6 ++---- ui/console.c | 2 +- ui/gtk.c | 2 +- 70 files changed, 180 insertions(+), 178 deletions(-)
Signature · 1 line
2.17.1
PATCH v2 1/11 hw/ipmi: Remove unnecessary declarations
--- hw/ipmi/ipmi_bmc_extern.c | 4 ---- 1 file changed, 4 deletions(-)
hw/ipmi/ipmi_bmc_extern.c +0 -4
@@ -85,10 +85,6 @@ typedef struct IPMIBmcExtern {bool send_reset; } IPMIBmcExtern; -static int can_receive (void *opaque); -static void receive (void *opaque,const uint8_t *buf,int size); -static void chr_event (void *opaque,int event); -static unsigned char ipmb_checksum (const unsigned char *data,int size,unsigned char start) {
Signature · 1 line
2.17.1
Re: [Qemu-devel] [PATCH v2 01/11] hw/ipmi: Remove unnecessary declarations
Quoted 10 lines · Philippe Mathieu-Daudé
Signed-off-by Philippe Mathieu-Daudé <[email protected]>--- hw/ipmi/ipmi_bmc_extern.c | 4 ---- 1 file changed, 4 deletions(-)hw/ipmi/ipmi_bmc_extern.c +0
-0
hw/ipmi/ipmi_bmc_extern.c typedef struct IPMIBmcExtern { · line 90
Quoted 10 lines
hw/ipmi/ipmi_bmc_extern.c +0
-4@@ -85,10 +85,6 @@ typedef struct IPMIBmcExtern {bool send_reset; } IPMIBmcExtern; -static int can_receive (void *opaque); -static void receive (void *opaque,const uint8_t *buf,int size); -static void chr_event (void *opaque,int event); -static unsigned char ipmb_checksum (const unsigned char *data,int size,unsigned char start) {
Looks good to me. Thanks.
PATCH v2 2/11 target/xtensa: Remove unnecessary declarations
In reply to Philippe Mathieu-Daudé--- target/xtensa/xtensa-semi.c | 2 -- 1 file changed, 2 deletions(-)
target/xtensa/xtensa-semi.c +0 -2
@@ -161,7 +161,6 @@ typedef struct XtensaSimConsole {static XtensaSimConsole *sim_console; -static IOCanReadHandler sim_console_can_read;static int sim_console_can_read (void *opaque) {XtensaSimConsole *p = opaque;
@@ -169,7 +168,6 @@ static int sim_console_can_read(void *opaque)return sizeof (p->input.buffer) - p->input.offset; } -static IOReadHandler sim_console_read;static void sim_console_read (void *opaque,const uint8_t *buf,int size) {XtensaSimConsole *p = opaque;
Signature · 1 line
2.17.1
PATCH v2 3/11 chardev: Simplify IOWatchPoll::fd_can_read as a GSourceFunc
In reply to Philippe Mathieu-DaudéIOWatchPoll::fd_can_read() simply returns a boolean value.
--- chardev/char-fd.c | 4 ++-- chardev/char-io.c | 4 ++-- chardev/char-pty.c | 4 ++-- chardev/char-socket.c | 6 +++--- chardev/char-udp.c | 4 ++-- include/chardev/char-io.h | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-)
chardev/char-fd.c +2 -2
@@ -69,13 +69,13 @@ static gboolean fd_chr_read(QIOChannel *chan, GIOCondition cond, void *opaque)return TRUE; } -static int fd_chr_read_poll (void *opaque) +static gboolean fd_chr_read_poll (void *opaque) {Chardev *chr =CHARDEV (opaque);FDChardev *s =FD_CHARDEV (opaque); s->max_size =qemu_chr_be_can_write (chr); -return s->max_size; +return s->max_size >0 ; }static GSource *fd_chr_add_watch (Chardev *chr,GIOCondition cond)
chardev/char-io.c +2 -2
@@ -30,7 +30,7 @@ typedef struct IOWatchPoll {QIOChannel *ioc;GSource *src; -IOCanReadHandler *fd_can_read; +GSourceFunc fd_can_read;GSourceFunc fd_read;void *opaque; } IOWatchPoll;
@@ -76,7 +76,7 @@ static GSourceFuncs io_watch_poll_funcs = {GSource *io_add_watch_poll (Chardev *chr,QIOChannel *ioc, -IOCanReadHandler *fd_can_read, +GSourceFunc fd_can_read,QIOChannelFunc fd_read,gpointer user_data,GMainContext *context)
chardev/char-pty.c +2 -2
@@ -148,13 +148,13 @@ static GSource *pty_chr_add_watch(Chardev *chr, GIOCondition cond)return qio_channel_create_watch (s->ioc, cond); } -static int pty_chr_read_poll (void *opaque) +static gboolean pty_chr_read_poll (void *opaque) {Chardev *chr =CHARDEV (opaque);PtyChardev *s =PTY_CHARDEV (opaque); s->read_bytes =qemu_chr_be_can_write (chr); -return s->read_bytes; +return s->read_bytes >0 ; }static gboolean pty_chr_read (QIOChannel *chan,GIOCondition cond,void *opaque)
chardev/char-socket.c +3 -3
@@ -120,7 +120,7 @@ static void tcp_chr_accept(QIONetListener *listener, QIOChannelSocket *cioc, void *opaque); -static int tcp_chr_read_poll (void *opaque); +static gboolean tcp_chr_read_poll (void *opaque);static void tcp_chr_disconnect (Chardev *chr);/* Called with chr_write_lock held. */
@@ -157,7 +157,7 @@ static int tcp_chr_write(Chardev *chr, const uint8_t *buf, int len) } } -static int tcp_chr_read_poll (void *opaque) +static gboolean tcp_chr_read_poll (void *opaque) {Chardev *chr =CHARDEV (opaque);SocketChardev *s =SOCKET_CHARDEV (opaque);
@@ -165,7 +165,7 @@ static int tcp_chr_read_poll(void *opaque)return 0 ; } s->max_size =qemu_chr_be_can_write (chr); -return s->max_size; +return s->max_size >0 ; } static void tcp_chr_process_IAC_bytes(Chardev *chr,
chardev/char-udp.c +2 -2
@@ -65,7 +65,7 @@ static void udp_chr_flush_buffer(UdpChardev *s) } } -static int udp_chr_read_poll (void *opaque) +static gboolean udp_chr_read_poll (void *opaque) {Chardev *chr =CHARDEV (opaque);UdpChardev *s =UDP_CHARDEV (opaque);
@@ -77,7 +77,7 @@ static int udp_chr_read_poll(void *opaque)*/ udp_chr_flush_buffer (s); -return s->max_size; +return s->max_size >0 ; }static gboolean udp_chr_read (QIOChannel *chan,GIOCondition cond,void *opaque)
include/chardev/char-io.h +1 -1
@@ -31,7 +31,7 @@/* Can only be used for read */ GSource *io_add_watch_poll (Chardev *chr,QIOChannel *ioc, -IOCanReadHandler *fd_can_read, +GSourceFunc fd_can_read,QIOChannelFunc fd_read,gpointer user_data,GMainContext *context);
Signature · 1 line
2.17.1
PATCH v2 4/11 chardev: Assert backend's chr_can_read() is positive
In reply to Philippe Mathieu-Daudé--- chardev/char.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
chardev/char.c +4 -1
@@ -159,12 +159,15 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all)int qemu_chr_be_can_write (Chardev *s) {CharBackend *be = s->be; +int res;if (!be || !be->chr_can_read) {return 0 ; } -return be->chr_can_read (be->opaque); + res = be->chr_can_read (be->opaque); +assert (res >=0 ); +return res; }void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,int len)
Signature · 1 line
2.17.1
PATCH v2 5/11 chardev: Let chr_sync_read() use unsigned type
In reply to Philippe Mathieu-DaudéNote than tcp_chr_recv() already use size_t.
--- chardev/char-socket.c | 2 +- include/chardev/char.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
chardev/char-socket.c +1 -1
@@ -494,7 +494,7 @@ static gboolean tcp_chr_hup(QIOChannel *channel,return G_SOURCE_REMOVE ; } -static int tcp_chr_sync_read (Chardev *chr,const uint8_t *buf,int len) +static size_t tcp_chr_sync_read (Chardev *chr,const uint8_t *buf,size_t len) {SocketChardev *s =SOCKET_CHARDEV (chr);int size;
include/chardev/char.h +1 -1
@@ -251,7 +251,7 @@ typedef struct ChardevClass { bool *be_opened, Error **errp);int (*chr_write)(Chardev *s,const uint8_t *buf,int len); -int (*chr_sync_read)(Chardev *s,const uint8_t *buf,int len); +size_t (*chr_sync_read)(Chardev *s,const uint8_t *buf,size_t len);GSource *(*chr_add_watch)(Chardev *s,GIOCondition cond);void (*chr_update_read_handler)(Chardev *s);int (*chr_ioctl)(Chardev *s,int cmd,void *arg);
Signature · 1 line
2.17.1
PATCH v2 6/11 chardev: Let chr_write use unsigned type
In reply to Philippe Mathieu-Daudé--- chardev/baum.c | 2 +- chardev/char-fd.c | 2 +- chardev/char-mux.c | 2 +- chardev/char-pty.c | 2 +- chardev/char-ringbuf.c | 4 ++-- chardev/char-socket.c | 2 +- chardev/char-udp.c | 2 +- chardev/char.c | 2 +- chardev/msmouse.c | 2 +- chardev/spice.c | 2 +- chardev/testdev.c | 2 +- chardev/wctablet.c | 4 ++-- gdbstub.c | 2 +- hw/bt/hci-csr.c | 4 ++-- include/chardev/char.h | 2 +- ui/console.c | 2 +- ui/gtk.c | 2 +- 17 files changed, 20 insertions(+), 20 deletions(-)
chardev/baum.c +1 -1
@@ -479,7 +479,7 @@ static int baum_eat_packet(BaumChardev *baum, const uint8_t *buf, int len) }/* The other end is writing some data. Store it and try to interpret */ -static int baum_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t baum_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {BaumChardev *baum =BAUM_CHARDEV (chr);int tocopy, cur, eaten, orig_len = len;
chardev/char-fd.c +1 -1
@@ -32,7 +32,7 @@#include "chardev/char-io.h" /* Called with chr_write_lock held. */ -static int fd_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t fd_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {FDChardev *s =FD_CHARDEV (chr);
chardev/char-mux.c +1 -1
@@ -33,7 +33,7 @@/* MUX driver for serial I/O splitting */ /* Called with chr_write_lock held. */ -static int mux_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t mux_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {MuxChardev *d =MUX_CHARDEV (chr);int ret;
chardev/char-pty.c +1 -1
@@ -125,7 +125,7 @@ static void pty_chr_update_read_handler(Chardev *chr) }/* Called with chr_write_lock held. */ -static int char_pty_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t char_pty_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {PtyChardev *s =PTY_CHARDEV (chr);
chardev/char-ringbuf.c +2 -2
@@ -49,12 +49,12 @@ static size_t ringbuf_count(const Chardev *chr)return d->prod - d->cons; } -static int ringbuf_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t ringbuf_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {RingBufChardev *d =RINGBUF_CHARDEV (chr);int i; -if (!buf || (len <0 )) { +if (!buf) {return -1 ; }
chardev/char-socket.c +1 -1
@@ -124,7 +124,7 @@ static gboolean tcp_chr_read_poll(void *opaque);static void tcp_chr_disconnect (Chardev *chr);/* Called with chr_write_lock held. */ -static int tcp_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t tcp_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {SocketChardev *s =SOCKET_CHARDEV (chr);
chardev/char-udp.c +1 -1
@@ -45,7 +45,7 @@ typedef struct {#define UDP_CHARDEV (obj) OBJECT_CHECK(UdpChardev, (obj), TYPE_CHARDEV_UDP)/* Called with chr_write_lock held. */ -static int udp_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t udp_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {UdpChardev *s =UDP_CHARDEV (chr);
chardev/char.c +1 -1
@@ -245,7 +245,7 @@ static void char_init(Object *obj)qemu_mutex_init (&chr->chr_write_lock); } -static int null_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t null_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {return len; }
chardev/msmouse.c +1 -1
@@ -133,7 +133,7 @@ static void msmouse_input_sync(DeviceState *dev)msmouse_chr_accept_input (chr); } -static int msmouse_chr_write (struct Chardev *s,const uint8_t *buf,int len) +static size_t msmouse_chr_write (struct Chardev *s,const uint8_t *buf,size_t len) {/* Ignore writes to mouse port */ return len;
chardev/spice.c +1 -1
@@ -193,7 +193,7 @@ static GSource *spice_chr_add_watch(Chardev *chr, GIOCondition cond)return (GSource *)src; } -static int spice_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t spice_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {SpiceChardev *s =SPICE_CHARDEV (chr);int read_bytes;
chardev/testdev.c +1 -1
@@ -82,7 +82,7 @@ static int testdev_eat_packet(TestdevChardev *testdev) }/* The other end is writing some data. Store it and try to interpret */ -static int testdev_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t testdev_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {TestdevChardev *testdev =TESTDEV_CHARDEV (chr);int tocopy, eaten, orig_len = len;
chardev/wctablet.c +2 -2
@@ -203,8 +203,8 @@ static void wctablet_chr_accept_input(Chardev *chr) } } -static int wctablet_chr_write (struct Chardev *chr, -const uint8_t *buf,int len) +static size_t wctablet_chr_write (struct Chardev *chr, +const uint8_t *buf,size_t len) {TabletChardev *tablet =WCTABLET_CHARDEV (chr);unsigned int i, clen;
gdbstub.c +1 -1
@@ -1955,7 +1955,7 @@ static void gdb_monitor_output(GDBState *s, const char *msg, int len)put_packet (s, buf); } -static int gdb_monitor_write (Chardev *chr,const uint8_t *buf,int len) +static size_t gdb_monitor_write (Chardev *chr,const uint8_t *buf,size_t len) {const char *p = (const char *)buf;int max_sz;
hw/bt/hci-csr.c +2 -2
@@ -314,8 +314,8 @@ static void csrhci_ready_for_next_inpkt(struct csrhci_s *s) s->in_hdr =INT_MAX ; } -static int csrhci_write (struct Chardev *chr, -const uint8_t *buf,int len) +static size_t csrhci_write (struct Chardev *chr, +const uint8_t *buf,size_t len) {struct csrhci_s *s = (struct csrhci_s *)chr;int total =0 ;
include/chardev/char.h +1 -1
@@ -250,7 +250,7 @@ typedef struct ChardevClass {void (*open)(Chardev *chr,ChardevBackend *backend,bool *be_opened,Error **errp); -int (*chr_write)(Chardev *s,const uint8_t *buf,int len); +size_t (*chr_write)(Chardev *s,const uint8_t *buf,size_t len);size_t (*chr_sync_read)(Chardev *s,const uint8_t *buf,size_t len);GSource *(*chr_add_watch)(Chardev *s,GIOCondition cond);void (*chr_update_read_handler)(Chardev *s);
ui/console.c +1 -1
@@ -1080,7 +1080,7 @@ typedef struct VCChardev {#define TYPE_CHARDEV_VC "chardev-vc"#define VC_CHARDEV (obj) OBJECT_CHECK(VCChardev, (obj), TYPE_CHARDEV_VC) -static int vc_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t vc_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {VCChardev *drv =VC_CHARDEV (chr);QemuConsole *s = drv->console;
ui/gtk.c +1 -1
@@ -1842,7 +1842,7 @@ static void gd_vc_adjustment_changed(GtkAdjustment *adjustment, void *opaque) } } -static int gd_vc_chr_write (Chardev *chr,const uint8_t *buf,int len) +static size_t gd_vc_chr_write (Chardev *chr,const uint8_t *buf,size_t len) {VCChardev *vcd =VC_CHARDEV (chr);VirtualConsole *vc = vcd->console;
Signature · 1 line
2.17.1
PATCH v2 7/11 chardev: Let IOReadHandler use unsigned type
In reply to Philippe Mathieu-DaudéThe number of bytes can not be negative nor zero.
Fixed 2 format string:
- hw/char/spapr_vty.c
- hw/usb/ccid-card-passthru.c
--- backends/rng-egd.c | 2 +- chardev/char-mux.c | 2 +- gdbstub.c | 2 +- hw/arm/pxa2xx.c | 2 +- hw/arm/strongarm.c | 3 ++- hw/char/bcm2835_aux.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/cmsdk-apb-uart.c | 2 +- hw/char/digic-uart.c | 2 +- hw/char/escc.c | 2 +- hw/char/etraxfs_ser.c | 2 +- hw/char/exynos4210_uart.c | 3 ++- hw/char/grlib_apbuart.c | 2 +- hw/char/imx_serial.c | 2 +- hw/char/ipoctal232.c | 2 +- hw/char/lm32_juart.c | 2 +- hw/char/lm32_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/milkymist-uart.c | 2 +- hw/char/pl011.c | 2 +- hw/char/sclpconsole-lm.c | 2 +- hw/char/sclpconsole.c | 2 +- hw/char/serial.c | 4 ++-- hw/char/sh_serial.c | 2 +- hw/char/spapr_vty.c | 4 ++-- hw/char/stm32f2xx_usart.c | 3 ++- hw/char/terminal3270.c | 2 +- hw/char/virtio-console.c | 2 +- hw/char/xen_console.c | 2 +- hw/char/xilinx_uartlite.c | 2 +- hw/ipmi/ipmi_bmc_extern.c | 2 +- hw/misc/ivshmem.c | 4 ++-- hw/riscv/riscv_htif.c | 2 +- hw/riscv/sifive_uart.c | 2 +- hw/usb/ccid-card-passthru.c | 4 ++-- hw/usb/dev-serial.c | 2 +- hw/usb/redirect.c | 2 +- include/qemu/main-loop.h | 2 +- monitor.c | 4 ++-- net/colo-compare.c | 4 ++-- net/filter-mirror.c | 2 +- net/slirp.c | 2 +- qtest.c | 2 +- target/xtensa/xtensa-semi.c | 2 +- 44 files changed, 53 insertions(+), 50 deletions(-)
backends/rng-egd.c +1 -1
@@ -61,7 +61,7 @@ static int rng_egd_chr_can_read(void *opaque)return size; } -static void rng_egd_chr_read (void *opaque,const uint8_t *buf,int size) +static void rng_egd_chr_read (void *opaque,const uint8_t *buf,size_t size) {RngEgd *s =RNG_EGD (opaque);size_t buf_offset =0 ;
chardev/char-mux.c +1 -1
@@ -209,7 +209,7 @@ static int mux_chr_can_read(void *opaque)return 0 ; } -static void mux_chr_read (void *opaque,const uint8_t *buf,int size) +static void mux_chr_read (void *opaque,const uint8_t *buf,size_t size) {Chardev *chr =CHARDEV (opaque);MuxChardev *d =MUX_CHARDEV (opaque);
gdbstub.c +1 -1
@@ -1923,7 +1923,7 @@ static int gdb_chr_can_receive(void *opaque)return MAX_PACKET_LENGTH ; } -static void gdb_chr_receive (void *opaque,const uint8_t *buf,int size) +static void gdb_chr_receive (void *opaque,const uint8_t *buf,size_t size) {int i;
hw/arm/pxa2xx.c +1 -1
@@ -1929,7 +1929,7 @@ static int pxa2xx_fir_is_empty(void *opaque)return (s->rx_len <64 ); } -static void pxa2xx_fir_rx (void *opaque,const uint8_t *buf,int size) +static void pxa2xx_fir_rx (void *opaque,const uint8_t *buf,size_t size) {PXA2xxFIrState *s = (PXA2xxFIrState *) opaque;if (!(s->control[0 ] & (1 <<4 )))/* RXE */
hw/arm/strongarm.c +2 -1
@@ -1072,7 +1072,8 @@ static int strongarm_uart_can_receive(void *opaque)return 1 ; } -static void strongarm_uart_receive (void *opaque,const uint8_t *buf,int size) +static void strongarm_uart_receive (void *opaque,const uint8_t *buf, +size_t size) {StrongARMUARTState *s = opaque;int i;
hw/char/bcm2835_aux.c +1 -1
@@ -235,7 +235,7 @@ static void bcm2835_aux_put_fifo(void *opaque, uint8_t value)bcm2835_aux_update (s); } -static void bcm2835_aux_receive (void *opaque,const uint8_t *buf,int size) +static void bcm2835_aux_receive (void *opaque,const uint8_t *buf,size_t size) {bcm2835_aux_put_fifo (opaque, *buf); }
hw/char/cadence_uart.c +1 -1
@@ -332,7 +332,7 @@ static void uart_write_tx_fifo(CadenceUARTState *s, const uint8_t *buf,cadence_uart_xmit (NULL ,G_IO_OUT , s); } -static void uart_receive (void *opaque,const uint8_t *buf,int size) +static void uart_receive (void *opaque,const uint8_t *buf,size_t size) {CadenceUARTState *s = opaque;uint32_t ch_mode = s->r[R_MR ] &UART_MR_CHMODE ;
hw/char/cmsdk-apb-uart.c +1 -1
@@ -119,7 +119,7 @@ static int uart_can_receive(void *opaque)return 0 ; } -static void uart_receive (void *opaque,const uint8_t *buf,int size) +static void uart_receive (void *opaque,const uint8_t *buf,size_t size) {CMSDKAPBUART *s =CMSDK_APB_UART (opaque);
hw/char/digic-uart.c +1 -1
@@ -119,7 +119,7 @@ static int uart_can_rx(void *opaque)return !(s->reg_st &ST_RX_RDY ); } -static void uart_rx (void *opaque,const uint8_t *buf,int size) +static void uart_rx (void *opaque,const uint8_t *buf,size_t size) {DigicUartState *s = opaque;
hw/char/escc.c +1 -1
@@ -601,7 +601,7 @@ static void serial_receive_break(ESCCChannelState *s)escc_update_irq (s); } -static void serial_receive1 (void *opaque,const uint8_t *buf,int size) +static void serial_receive1 (void *opaque,const uint8_t *buf,size_t size) {ESCCChannelState *s = opaque;serial_receive_byte (s, buf[0 ]);
hw/char/etraxfs_ser.c +1 -1
@@ -166,7 +166,7 @@ static Property etraxfs_ser_properties[] = { DEFINE_PROP_END_OF_LIST(), }; -static void serial_receive (void *opaque,const uint8_t *buf,int size) +static void serial_receive (void *opaque,const uint8_t *buf,size_t size) {ETRAXSerial *s = opaque;int i;
hw/char/exynos4210_uart.c +2 -1
@@ -495,7 +495,8 @@ static int exynos4210_uart_can_receive(void *opaque) } -static void exynos4210_uart_receive (void *opaque,const uint8_t *buf,int size) +static void exynos4210_uart_receive (void *opaque,const uint8_t *buf, +size_t size) {Exynos4210UartState *s = (Exynos4210UartState *)opaque;int i;
hw/char/grlib_apbuart.c +1 -1
@@ -137,7 +137,7 @@ static int grlib_apbuart_can_receive(void *opaque)return FIFO_LENGTH - uart->len; } -static void grlib_apbuart_receive (void *opaque,const uint8_t *buf,int size) +static void grlib_apbuart_receive (void *opaque,const uint8_t *buf,size_t size) {UART *uart = opaque;
hw/char/imx_serial.c +1 -1
@@ -315,7 +315,7 @@ static void imx_put_data(void *opaque, uint32_t value)imx_update (s); } -static void imx_receive (void *opaque,const uint8_t *buf,int size) +static void imx_receive (void *opaque,const uint8_t *buf,size_t size) {imx_put_data (opaque, *buf); }
hw/char/ipoctal232.c +1 -1
@@ -468,7 +468,7 @@ static int hostdev_can_receive(void *opaque)return ch->rx_enabled ? available_bytes :0 ; } -static void hostdev_receive (void *opaque,const uint8_t *buf,int size) +static void hostdev_receive (void *opaque,const uint8_t *buf,size_t size) {SCC2698Channel *ch = opaque;IPOctalState *dev = ch->ipoctal;
hw/char/lm32_juart.c +1 -1
@@ -88,7 +88,7 @@ void lm32_juart_set_jrx(DeviceState *d, uint32_t jtx) s->jrx &= ~JRX_FULL ; } -static void juart_rx (void *opaque,const uint8_t *buf,int size) +static void juart_rx (void *opaque,const uint8_t *buf,size_t size) {LM32JuartState *s = opaque;
hw/char/lm32_uart.c +1 -1
@@ -211,7 +211,7 @@ static const MemoryRegionOps uart_ops = { }, }; -static void uart_rx (void *opaque,const uint8_t *buf,int size) +static void uart_rx (void *opaque,const uint8_t *buf,size_t size) {LM32UartState *s = opaque;
hw/char/mcf_uart.c +1 -1
@@ -274,7 +274,7 @@ static int mcf_uart_can_receive(void *opaque)return s->rx_enabled && (s->sr &MCF_UART_FFULL ) ==0 ; } -static void mcf_uart_receive (void *opaque,const uint8_t *buf,int size) +static void mcf_uart_receive (void *opaque,const uint8_t *buf,size_t size) {mcf_uart_state *s = (mcf_uart_state *)opaque;
hw/char/milkymist-uart.c +1 -1
@@ -158,7 +158,7 @@ static const MemoryRegionOps uart_mmio_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static void uart_rx (void *opaque,const uint8_t *buf,int size) +static void uart_rx (void *opaque,const uint8_t *buf,size_t size) {MilkymistUartState *s = opaque;
hw/char/pl011.c +1 -1
@@ -260,7 +260,7 @@ static void pl011_put_fifo(void *opaque, uint32_t value) } } -static void pl011_receive (void *opaque,const uint8_t *buf,int size) +static void pl011_receive (void *opaque,const uint8_t *buf,size_t size) {pl011_put_fifo (opaque, *buf); }
hw/char/sclpconsole-lm.c +1 -1
@@ -71,7 +71,7 @@ static int chr_can_read(void *opaque)return 1 ; } -static void chr_read (void *opaque,const uint8_t *buf,int size) +static void chr_read (void *opaque,const uint8_t *buf,size_t size) {SCLPConsoleLM *scon = opaque;
hw/char/sclpconsole.c +1 -1
@@ -59,7 +59,7 @@ static int chr_can_read(void *opaque) }/* Send data from a char device over to the guest */ -static void chr_read (void *opaque,const uint8_t *buf,int size) +static void chr_read (void *opaque,const uint8_t *buf,size_t size) {SCLPConsole *scon = opaque;
hw/char/serial.c +2 -2
@@ -105,7 +105,7 @@ do { fprintf(stderr, "serial: " fmt , ## __VA_ARGS__); } while (0) do {} while (0)#endif -static void serial_receive1 (void *opaque,const uint8_t *buf,int size); +static void serial_receive1 (void *opaque,const uint8_t *buf,size_t size);static void serial_xmit (SerialState *s);static inline void recv_fifo_put (SerialState *s,uint8_t chr)
@@ -606,7 +606,7 @@ static int serial_can_receive1(void *opaque)return serial_can_receive (s); } -static void serial_receive1 (void *opaque,const uint8_t *buf,int size) +static void serial_receive1 (void *opaque,const uint8_t *buf,size_t size) {SerialState *s = opaque;
hw/char/sh_serial.c +1 -1
@@ -327,7 +327,7 @@ static void sh_serial_timeout_int(void *opaque) } } -static void sh_serial_receive1 (void *opaque,const uint8_t *buf,int size) +static void sh_serial_receive1 (void *opaque,const uint8_t *buf,size_t size) {sh_serial_state *s = opaque;
hw/char/spapr_vty.c +2 -2
@@ -28,7 +28,7 @@ static int vty_can_receive(void *opaque)return VTERM_BUFSIZE - (dev->in - dev->out); } -static void vty_receive (void *opaque,const uint8_t *buf,int size) +static void vty_receive (void *opaque,const uint8_t *buf,size_t size) {VIOsPAPRVTYDevice *dev =VIO_SPAPR_VTY_DEVICE (opaque);int i;
@@ -42,7 +42,7 @@ static void vty_receive(void *opaque, const uint8_t *buf, int size)static bool reported;if (!reported) {error_report ("VTY input buffer exhausted - characters dropped." -" (input size = %i)" , size); +" (input size = %zu)" , size); reported = true; }break ;
hw/char/stm32f2xx_usart.c +2 -1
@@ -49,7 +49,8 @@ static int stm32f2xx_usart_can_receive(void *opaque)return 0 ; } -static void stm32f2xx_usart_receive (void *opaque,const uint8_t *buf,int size) +static void stm32f2xx_usart_receive (void *opaque,const uint8_t *buf, +size_t size) {STM32F2XXUsartState *s = opaque;
hw/char/terminal3270.c +1 -1
@@ -90,7 +90,7 @@ static gboolean send_timing_mark_cb(gpointer opaque)* As of now, for such case, we simply terminate the connection, * and we should come back here later with a better solution. */ -static void terminal_read (void *opaque,const uint8_t *buf,int size) +static void terminal_read (void *opaque,const uint8_t *buf,size_t size) {Terminal3270 *t = opaque;CcwDevice *ccw_dev =CCW_DEVICE (t);
hw/char/virtio-console.c +1 -1
@@ -134,7 +134,7 @@ static int chr_can_read(void *opaque) }/* Send data from a char device over to the guest */ -static void chr_read (void *opaque,const uint8_t *buf,int size) +static void chr_read (void *opaque,const uint8_t *buf,size_t size) {VirtConsole *vcon = opaque;VirtIOSerialPort *port =VIRTIO_SERIAL_PORT (vcon);
hw/char/xen_console.c +1 -1
@@ -122,7 +122,7 @@ static int xencons_can_receive(void *opaque)return ring_free_bytes (con); } -static void xencons_receive (void *opaque,const uint8_t *buf,int len) +static void xencons_receive (void *opaque,const uint8_t *buf,size_t len) {struct XenConsole *con = opaque;struct xencons_interface *intf = con->sring;
hw/char/xilinx_uartlite.c +1 -1
@@ -177,7 +177,7 @@ static Property xilinx_uartlite_properties[] = { DEFINE_PROP_END_OF_LIST(), }; -static void uart_rx (void *opaque,const uint8_t *buf,int size) +static void uart_rx (void *opaque,const uint8_t *buf,size_t size) {XilinxUARTLite *s = opaque;
hw/ipmi/ipmi_bmc_extern.c +1 -1
@@ -312,7 +312,7 @@ static int can_receive(void *opaque)return 1 ; } -static void receive (void *opaque,const uint8_t *buf,int size) +static void receive (void *opaque,const uint8_t *buf,size_t size) {IPMIBmcExtern *ibe = opaque;int i;
hw/misc/ivshmem.c +2 -2
@@ -628,14 +628,14 @@ static int ivshmem_can_receive(void *opaque)return sizeof (s->msg_buf) - s->msg_buffered_bytes; } -static void ivshmem_read (void *opaque,const uint8_t *buf,int size) +static void ivshmem_read (void *opaque,const uint8_t *buf,size_t size) {IVShmemState *s = opaque;Error *err =NULL ;int fd;int64_t msg; -assert (size >=0 && s->msg_buffered_bytes + size <=sizeof (s->msg_buf)); +assert (s->msg_buffered_bytes + size <=sizeof (s->msg_buf));memcpy ((unsigned char *)&s->msg_buf + s->msg_buffered_bytes, buf, size); s->msg_buffered_bytes += size;if (s->msg_buffered_bytes <sizeof (s->msg_buf)) {
hw/riscv/riscv_htif.c +1 -1
@@ -74,7 +74,7 @@ static int htif_can_recv(void *opaque)* Called by the char dev to supply input to HTIF console. * We assume that we will receive one character at a time. */ -static void htif_recv (void *opaque,const uint8_t *buf,int size) +static void htif_recv (void *opaque,const uint8_t *buf,size_t size) {HTIFState *htifstate = opaque;
hw/riscv/sifive_uart.c +1 -1
@@ -123,7 +123,7 @@ static const MemoryRegionOps uart_ops = { } }; -static void uart_rx (void *opaque,const uint8_t *buf,int size) +static void uart_rx (void *opaque,const uint8_t *buf,size_t size) {SiFiveUARTState *s = opaque;
hw/usb/ccid-card-passthru.c +2 -2
@@ -270,13 +270,13 @@ static void ccid_card_vscard_drop_connection(PassthruState *card) card->vscard_in_pos = card->vscard_in_hdr =0 ; } -static void ccid_card_vscard_read (void *opaque,const uint8_t *buf,int size) +static void ccid_card_vscard_read (void *opaque,const uint8_t *buf,size_t size) {PassthruState *card = opaque;VSCMsgHeader *hdr;if (card->vscard_in_pos + size >VSCARD_IN_SIZE ) { -error_report ("no room for data: pos %u + size %d > %" PRId64"." +error_report ("no room for data: pos %u + size %zu > %" PRId64"." " dropping connection." , card->vscard_in_pos, size,VSCARD_IN_SIZE );ccid_card_vscard_drop_connection (card);
hw/usb/dev-serial.c +1 -1
@@ -431,7 +431,7 @@ static int usb_serial_can_read(void *opaque)return RECV_BUF - s->recv_used; } -static void usb_serial_read (void *opaque,const uint8_t *buf,int size) +static void usb_serial_read (void *opaque,const uint8_t *buf,size_t size) {USBSerialState *s = opaque;int first_size, start;
hw/usb/redirect.c +1 -1
@@ -1302,7 +1302,7 @@ static int usbredir_chardev_can_read(void *opaque)return 1 * MiB; } -static void usbredir_chardev_read (void *opaque,const uint8_t *buf,int size) +static void usbredir_chardev_read (void *opaque,const uint8_t *buf,size_t size) {USBRedirDevice *dev = opaque;
include/qemu/main-loop.h +1 -1
@@ -167,7 +167,7 @@ void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque);/* async I/O support */ -typedef void IOReadHandler (void *opaque,const uint8_t *buf,int size); +typedef void IOReadHandler (void *opaque,const uint8_t *buf,size_t size);/** * IOCanReadHandler: Return the number of bytes that #IOReadHandler can accept
monitor.c +2 -2
@@ -4240,14 +4240,14 @@ static void handle_qmp_command(void *opaque, QObject *req, Error *err)qemu_bh_schedule (qmp_dispatcher_bh); } -static void monitor_qmp_read (void *opaque,const uint8_t *buf,int size) +static void monitor_qmp_read (void *opaque,const uint8_t *buf,size_t size) {Monitor *mon = opaque;json_message_parser_feed (&mon->qmp.parser, (const char *) buf, size); } -static void monitor_read (void *opaque,const uint8_t *buf,int size) +static void monitor_read (void *opaque,const uint8_t *buf,size_t size) {Monitor *old_mon = cur_mon;int i;
net/colo-compare.c +2 -2
@@ -692,7 +692,7 @@ static int compare_chr_can_read(void *opaque)* Called from the main thread on the primary for packets * arriving over the socket from the primary. */ -static void compare_pri_chr_in (void *opaque,const uint8_t *buf,int size) +static void compare_pri_chr_in (void *opaque,const uint8_t *buf,size_t size) {CompareState *s =COLO_COMPARE (opaque);int ret;
@@ -709,7 +709,7 @@ static void compare_pri_chr_in(void *opaque, const uint8_t *buf, int size)* Called from the main thread on the primary for packets * arriving over the socket from the secondary. */ -static void compare_sec_chr_in (void *opaque,const uint8_t *buf,int size) +static void compare_sec_chr_in (void *opaque,const uint8_t *buf,size_t size) {CompareState *s =COLO_COMPARE (opaque);int ret;
net/filter-mirror.c +1 -1
@@ -119,7 +119,7 @@ static int redirector_chr_can_read(void *opaque)return REDIRECTOR_MAX_LEN ; } -static void redirector_chr_read (void *opaque,const uint8_t *buf,int size) +static void redirector_chr_read (void *opaque,const uint8_t *buf,size_t size) {NetFilterState *nf = opaque;MirrorState *s =FILTER_REDIRECTOR (nf);
net/slirp.c +1 -1
@@ -718,7 +718,7 @@ static int guestfwd_can_read(void *opaque)return slirp_socket_can_recv (fwd->slirp, fwd->server, fwd->port); } -static void guestfwd_read (void *opaque,const uint8_t *buf,int size) +static void guestfwd_read (void *opaque,const uint8_t *buf,size_t size) {struct GuestFwd *fwd = opaque;slirp_socket_recv (fwd->slirp, fwd->server, fwd->port, buf, size);
qtest.c +1 -1
@@ -657,7 +657,7 @@ static void qtest_process_inbuf(CharBackend *chr, GString *inbuf) } } -static void qtest_read (void *opaque,const uint8_t *buf,int size) +static void qtest_read (void *opaque,const uint8_t *buf,size_t size) {CharBackend *chr = opaque;
target/xtensa/xtensa-semi.c +1 -1
@@ -168,7 +168,7 @@ static int sim_console_can_read(void *opaque)return sizeof (p->input.buffer) - p->input.offset; } -static void sim_console_read (void *opaque,const uint8_t *buf,int size) +static void sim_console_read (void *opaque,const uint8_t *buf,size_t size) {XtensaSimConsole *p = opaque;size_t copy =sizeof (p->input.buffer) - p->input.offset;
Signature · 7 lines
2.17.1 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Qemu-devel] [PATCH v2 07/11] chardev: Let IOReadHandler use unsigned type
Quoted 9 lines · Philippe Mathieu-Daudé
The number of bytes can not be negative nor zero.
Fixed 2 format string:
-hw/char/spapr_vty.c
-hw/usb/ccid-card-passthru.cSuggested-by Paolo Bonzini <[email protected]>Signed-off-by Philippe Mathieu-Daudé <[email protected]>Acked-by Alberto Garcia <[email protected]>
Sorry to drag up an old patch series. As far as I can see this series was never applied. I suspect a better way of solving the issue may have been found? If so can anyone point me at that change?
I ask since CVE-2018-18438 is marked as affecting all qemu versions
(https://nvd.nist.gov/vuln/detail/CVE-2018-18438).
If it was fixed, the version mask could be updated. If the fix wasn't deemed worthwhile for some reason that is also fine and I can mark this one as such in our system. I'm being told we only need one of the patches in this series which I also don't believe as I suspect we either need the set or none of them!
Any info would be most welcome.
Cheers,
Richard
Re: [Qemu-devel] [PATCH v2 07/11] chardev: Let IOReadHandler use unsigned type
+-- On Fri, 22 Jan 2021, Richard Purdie wrote --+ | If so can anyone point me at that change? | | I ask since CVE-2018-18438 is marked as affecting all qemu versions | (https://nvd.nist.gov/vuln/detail/CVE-2018-18438). | | If it was fixed, the version mask could be updated. If the fix wasn't deemed | worthwhile for some reason that is also fine and I can mark this one as such | in our system. I'm being told we only need one of the patches in this series | which I also don't believe as I suspect we either need the set or none of | them! | | Any info would be most welcome.
-> https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02239.html
-> https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02231.html
* Yes, the type change fix had come up during patch reviews above, and this series implemented the change.
* Series is required IIUC, didn't realise it's not merged.
Thank you.
--
Prasad J Pandit / Red Hat Product Security Team
8685 545E B54C 486B C6EB 271E E285 8B5A F050 DE8D
Re: [Qemu-devel] [PATCH v2 07/11] chardev: Let IOReadHandler use unsigned type
Hi Prasad, Richard.
Quoted 14 lines · P J P
+-- On Fri, 22 Jan 2021, Richard Purdie wrote --+ | If so can anyone point me at that change? | | I ask since CVE-2018-18438 is marked as affecting all qemu versions | (https://nvd.nist.gov/vuln/detail/CVE-2018-18438). | | If it was fixed, the version mask could be updated. If the fix wasn't deemed | worthwhile for some reason that is also fine and I can mark this one as such | in our system. I'm being told we only need one of the patches in this series | which I also don't believe as I suspect we either need the set or none of | them! | | Any info would be most welcome.
Quoted 7 lines
-> https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02239.html
-> https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02231.html* Yes, the type change fix had come up during patch reviews above, and this series implemented the change.
* Series is required IIUC, didn't realise it's not merged.
Audit from Marc-André pointed that this is unlikely, we asked the reporter for a reproducer and got not news, and eventually closed this as NOTABUG (not even WONTFIX):
https://bugzilla.redhat.com/show_bug.cgi?id=1609015
Regards,
Phil.
Re: [Qemu-devel] [PATCH v2 07/11] chardev: Let IOReadHandler use unsigned type
Quoted 23 lines · Philippe Mathieu-Daudé
Hi Prasad, Richard.
Quoted 20 lines · P J P
+-- On Fri, 22 Jan 2021, Richard Purdie wrote --+
Quoted 5 lines
If so can anyone point me at that change?
I ask since CVE-2018-18438 is marked as affecting all qemu versions
(https://nvd.nist.gov/vuln/detail/CVE-2018-18438).Quoted 7 lines
If it was fixed, the version mask could be updated. If the fix wasn't deemed worthwhile for some reason that is also fine and I can mark this one as such in our system. I'm being told we only need one of the patches in this series which I also don't believe as I suspect we either need the set or none of them!
Any info would be most welcome.
-> https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02239.html
-> https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02231.html* Yes, the type change fix had come up during patch reviews above, and this series implemented the change.
Quoted 6 lines
Quoted 1 line
* Series is required IIUC, didn't realise it's not merged.
Audit from Marc-André pointed that this is unlikely, we asked the reporter for a reproducer and got not news, and eventually closed this as NOTABUG (not even WONTFIX):
https://bugzilla.redhat.com/show_bug.cgi?id=1609015
I guessed there some resolution like this but couldn't find it thanks for the pointer. It's now clear in the archives and I can handle appropriately rejecting carrying those patches, thanks!
Cheers,
Richard
PATCH v2 8/11 chardev: Let IOCanReadHandler use unsigned type
In reply to Philippe Mathieu-Daudé--- backends/rng-egd.c | 4 ++-- chardev/char-mux.c | 2 +- gdbstub.c | 2 +- hw/arm/pxa2xx.c | 2 +- hw/arm/strongarm.c | 2 +- hw/char/bcm2835_aux.c | 2 +- hw/char/cadence_uart.c | 4 ++-- hw/char/cmsdk-apb-uart.c | 2 +- hw/char/digic-uart.c | 2 +- hw/char/escc.c | 6 +++--- hw/char/etraxfs_ser.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/imx_serial.c | 2 +- hw/char/ipoctal232.c | 4 ++-- hw/char/lm32_juart.c | 2 +- hw/char/lm32_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/milkymist-uart.c | 2 +- hw/char/parallel.c | 2 +- hw/char/pl011.c | 4 ++-- hw/char/sclpconsole-lm.c | 2 +- hw/char/sclpconsole.c | 4 ++-- hw/char/serial.c | 4 ++-- hw/char/sh_serial.c | 4 ++-- hw/char/spapr_vty.c | 2 +- hw/char/stm32f2xx_usart.c | 2 +- hw/char/terminal3270.c | 2 +- hw/char/virtio-console.c | 2 +- hw/char/xen_console.c | 2 +- hw/char/xilinx_uartlite.c | 2 +- hw/ipmi/ipmi_bmc_extern.c | 2 +- hw/misc/ivshmem.c | 2 +- hw/riscv/riscv_htif.c | 2 +- hw/riscv/sifive_uart.c | 2 +- hw/usb/ccid-card-passthru.c | 2 +- hw/usb/dev-serial.c | 2 +- hw/usb/redirect.c | 2 +- include/qemu/main-loop.h | 2 +- monitor.c | 2 +- net/colo-compare.c | 2 +- net/filter-mirror.c | 2 +- net/slirp.c | 2 +- qtest.c | 2 +- target/xtensa/xtensa-semi.c | 2 +- 45 files changed, 54 insertions(+), 54 deletions(-)
backends/rng-egd.c +2 -2
@@ -48,11 +48,11 @@ static void rng_egd_request_entropy(RngBackend *b, RngRequest *req) } } -static int rng_egd_chr_can_read (void *opaque) +static size_t rng_egd_chr_can_read (void *opaque) {RngEgd *s =RNG_EGD (opaque);RngRequest *req; -int size =0 ; +size_t size =0 ; QSIMPLEQ_FOREACH(req, &s->parent.requests, next) { size += req->size - req->offset;
chardev/char-mux.c +1 -1
@@ -192,7 +192,7 @@ static void mux_chr_accept_input(Chardev *chr) } } -static int mux_chr_can_read (void *opaque) +static size_t mux_chr_can_read (void *opaque) {MuxChardev *d =MUX_CHARDEV (opaque);int m = d->focus;
gdbstub.c +1 -1
@@ -1916,7 +1916,7 @@ void gdbserver_fork(CPUState *cpu) cpu_watchpoint_remove_all(cpu, BP_GDB); }#else -static int gdb_chr_can_receive (void *opaque) +static size_t gdb_chr_can_receive (void *opaque) {/* We can handle an arbitrarily large amount of data. Pick the maximum packet size, which is as good as anything. */
hw/arm/pxa2xx.c +1 -1
@@ -1923,7 +1923,7 @@ static const MemoryRegionOps pxa2xx_fir_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static int pxa2xx_fir_is_empty (void *opaque) +static size_t pxa2xx_fir_is_empty (void *opaque) {PXA2xxFIrState *s = (PXA2xxFIrState *) opaque;return (s->rx_len <64 );
hw/arm/strongarm.c +1 -1
@@ -1058,7 +1058,7 @@ static void strongarm_uart_rx_push(StrongARMUARTState *s, uint16_t c) s->rx_fifo[(s->rx_start +11 ) %12 ] |=RX_FIFO_ROR ; } -static int strongarm_uart_can_receive (void *opaque) +static size_t strongarm_uart_can_receive (void *opaque) {StrongARMUARTState *s = opaque;
hw/char/bcm2835_aux.c +1 -1
@@ -211,7 +211,7 @@ static void bcm2835_aux_write(void *opaque, hwaddr offset, uint64_t value,bcm2835_aux_update (s); } -static int bcm2835_aux_can_receive (void *opaque) +static size_t bcm2835_aux_can_receive (void *opaque) {BCM2835AuxState *s = opaque;
hw/char/cadence_uart.c +2 -2
@@ -216,10 +216,10 @@ static void uart_parameters_setup(CadenceUARTState *s)qemu_chr_fe_ioctl (&s->chr,CHR_IOCTL_SERIAL_SET_PARAMS , &ssp); } -static int uart_can_receive (void *opaque) +static size_t uart_can_receive (void *opaque) {CadenceUARTState *s = opaque; -int ret =MAX (CADENCE_UART_RX_FIFO_SIZE ,CADENCE_UART_TX_FIFO_SIZE ); +size_t ret =MAX (CADENCE_UART_RX_FIFO_SIZE ,CADENCE_UART_TX_FIFO_SIZE );uint32_t ch_mode = s->r[R_MR ] &UART_MR_CHMODE ;if (ch_mode ==NORMAL_MODE || ch_mode ==ECHO_MODE ) {
hw/char/cmsdk-apb-uart.c +1 -1
@@ -108,7 +108,7 @@ static void cmsdk_apb_uart_update(CMSDKAPBUART *s)qemu_set_irq (s->uartint, !!(s->intstatus)); } -static int uart_can_receive (void *opaque) +static size_t uart_can_receive (void *opaque) {CMSDKAPBUART *s =CMSDK_APB_UART (opaque);
hw/char/digic-uart.c +1 -1
@@ -112,7 +112,7 @@ static const MemoryRegionOps uart_mmio_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static int uart_can_rx (void *opaque) +static size_t uart_can_rx (void *opaque) {DigicUartState *s = opaque;
hw/char/escc.c +3 -3
@@ -166,7 +166,7 @@#define R_EXTINT 15static void handle_kbd_command (ESCCChannelState *s,int val); -static int serial_can_receive (void *opaque); +static size_t serial_can_receive (void *opaque);static void serial_receive_byte (ESCCChannelState *s,int ch);static void clear_queue (void *opaque)
@@ -573,10 +573,10 @@ static const MemoryRegionOps escc_mem_ops = { }, }; -static int serial_can_receive (void *opaque) +static size_t serial_can_receive (void *opaque) {ESCCChannelState *s = opaque; -int ret; +size_t ret;if (((s->wregs[W_RXCTRL ] &RXCTRL_RXEN ) ==0 )// Rx not enabled || ((s->rregs[R_STATUS ] &STATUS_RXAV ) ==STATUS_RXAV ))
hw/char/etraxfs_ser.c +1 -1
@@ -187,7 +187,7 @@ static void serial_receive(void *opaque, const uint8_t *buf, size_t size)ser_update_irq (s); } -static int serial_can_receive (void *opaque) +static size_t serial_can_receive (void *opaque) {ETRAXSerial *s = opaque;
hw/char/exynos4210_uart.c +1 -1
@@ -487,7 +487,7 @@ static const MemoryRegionOps exynos4210_uart_ops = { }, }; -static int exynos4210_uart_can_receive (void *opaque) +static size_t exynos4210_uart_can_receive (void *opaque) {Exynos4210UartState *s = (Exynos4210UartState *)opaque;
hw/char/grlib_apbuart.c +1 -1
@@ -130,7 +130,7 @@ static void uart_add_to_fifo(UART *uart, uart->len += length; } -static int grlib_apbuart_can_receive (void *opaque) +static size_t grlib_apbuart_can_receive (void *opaque) {UART *uart = opaque;
hw/char/imx_serial.c +1 -1
@@ -293,7 +293,7 @@ static void imx_serial_write(void *opaque, hwaddr offset, } } -static int imx_can_receive (void *opaque) +static size_t imx_can_receive (void *opaque) {IMXSerialState *s = (IMXSerialState *)opaque;return !(s->usr1 &USR1_RRDY );
hw/char/ipoctal232.c +2 -2
@@ -461,10 +461,10 @@ static void mem_write8(IPackDevice *ip, uint32_t addr, uint8_t val) } } -static int hostdev_can_receive (void *opaque) +static size_t hostdev_can_receive (void *opaque) {SCC2698Channel *ch = opaque; -int available_bytes =RX_FIFO_SIZE - ch->rx_pending; +size_t available_bytes =RX_FIFO_SIZE - ch->rx_pending;return ch->rx_enabled ? available_bytes :0 ; }
hw/char/lm32_juart.c +1 -1
@@ -95,7 +95,7 @@ static void juart_rx(void *opaque, const uint8_t *buf, size_t size) s->jrx = *buf |JRX_FULL ; } -static int juart_can_rx (void *opaque) +static size_t juart_can_rx (void *opaque) {LM32JuartState *s = opaque;
hw/char/lm32_uart.c +1 -1
@@ -225,7 +225,7 @@ static void uart_rx(void *opaque, const uint8_t *buf, size_t size)uart_update_irq (s); } -static int uart_can_rx (void *opaque) +static size_t uart_can_rx (void *opaque) {LM32UartState *s = opaque;
hw/char/mcf_uart.c +1 -1
@@ -267,7 +267,7 @@ static void mcf_uart_event(void *opaque, int event) } } -static int mcf_uart_can_receive (void *opaque) +static size_t mcf_uart_can_receive (void *opaque) {mcf_uart_state *s = (mcf_uart_state *)opaque;
hw/char/milkymist-uart.c +1 -1
@@ -170,7 +170,7 @@ static void uart_rx(void *opaque, const uint8_t *buf, size_t size)uart_update_irq (s); } -static int uart_can_rx (void *opaque) +static size_t uart_can_rx (void *opaque) {MilkymistUartState *s = opaque;
hw/char/parallel.c +1 -1
@@ -513,7 +513,7 @@ static const VMStateDescription vmstate_parallel_isa = { } }; -static int parallel_can_receive (void *opaque) +static size_t parallel_can_receive (void *opaque) {return 1 ; }
hw/char/pl011.c +2 -2
@@ -224,10 +224,10 @@ static void pl011_write(void *opaque, hwaddr offset, } } -static int pl011_can_receive (void *opaque) +static size_t pl011_can_receive (void *opaque) {PL011State *s = (PL011State *)opaque; -int r; +size_t r;if (s->lcr &0x10 ) { r = s->read_count <16 ;
hw/char/sclpconsole-lm.c +1 -1
@@ -61,7 +61,7 @@ typedef struct SCLPConsoleLM {* truncated to the guest in case it doesn't fit into the SCCB. */ -static int chr_can_read (void *opaque) +static size_t chr_can_read (void *opaque) {SCLPConsoleLM *scon = opaque;
hw/char/sclpconsole.c +2 -2
@@ -47,10 +47,10 @@ typedef struct SCLPConsole {/* character layer call-back functions */ /* Return number of bytes that fit into iov buffer */ -static int chr_can_read (void *opaque) +static size_t chr_can_read (void *opaque) {SCLPConsole *scon = opaque; -int avail =SIZE_BUFFER_VT220 - scon->iov_data_len; +size_t avail =SIZE_BUFFER_VT220 - scon->iov_data_len;if (avail ==0 ) { scon->notify = true;
hw/char/serial.c +2 -2
@@ -561,7 +561,7 @@ static uint64_t serial_ioport_read(void *opaque, hwaddr addr, unsigned size)return ret; } -static int serial_can_receive (SerialState *s) +static size_t serial_can_receive (SerialState *s) {if (s->fcr &UART_FCR_FE ) {if (s->recv_fifo.num <UART_FIFO_LENGTH ) {
@@ -600,7 +600,7 @@ static void fifo_timeout_int (void *opaque) { } } -static int serial_can_receive1 (void *opaque) +static size_t serial_can_receive1 (void *opaque) {SerialState *s = opaque;return serial_can_receive (s);
hw/char/sh_serial.c +2 -2
@@ -300,7 +300,7 @@ static uint64_t sh_serial_read(void *opaque, hwaddr offs,return ret; } -static int sh_serial_can_receive (sh_serial_state *s) +static size_t sh_serial_can_receive (sh_serial_state *s) {return s->scr & (1 <<4 ); }
@@ -311,7 +311,7 @@ static void sh_serial_receive_break(sh_serial_state *s) s->sr |= (1 <<4 ); } -static int sh_serial_can_receive1 (void *opaque) +static size_t sh_serial_can_receive1 (void *opaque) {sh_serial_state *s = opaque;return sh_serial_can_receive (s);
hw/char/spapr_vty.c +1 -1
@@ -21,7 +21,7 @@ typedef struct VIOsPAPRVTYDevice {#define VIO_SPAPR_VTY_DEVICE (obj) \ OBJECT_CHECK(VIOsPAPRVTYDevice, (obj), TYPE_VIO_SPAPR_VTY_DEVICE) -static int vty_can_receive (void *opaque) +static size_t vty_can_receive (void *opaque) {VIOsPAPRVTYDevice *dev =VIO_SPAPR_VTY_DEVICE (opaque);
hw/char/stm32f2xx_usart.c +1 -1
@@ -38,7 +38,7 @@ #define DB_PRINT(fmt, args...) DB_PRINT_L(1, fmt, ## args) -static int stm32f2xx_usart_can_receive (void *opaque) +static size_t stm32f2xx_usart_can_receive (void *opaque) {STM32F2XXUsartState *s = opaque;
hw/char/terminal3270.c +1 -1
@@ -38,7 +38,7 @@ typedef struct Terminal3270 {#define TERMINAL_3270 (obj) \ OBJECT_CHECK(Terminal3270, (obj), TYPE_TERMINAL_3270) -static int terminal_can_read (void *opaque) +static size_t terminal_can_read (void *opaque) {Terminal3270 *t = opaque;
hw/char/virtio-console.c +1 -1
@@ -126,7 +126,7 @@ static void guest_writable(VirtIOSerialPort *port) }/* Readiness of the guest to accept data on a port */ -static int chr_can_read (void *opaque) +static size_t chr_can_read (void *opaque) {VirtConsole *vcon = opaque;
hw/char/xen_console.c +1 -1
@@ -116,7 +116,7 @@ static int ring_free_bytes(struct XenConsole *con)return (sizeof (intf->in) - space); } -static int xencons_can_receive (void *opaque) +static size_t xencons_can_receive (void *opaque) {struct XenConsole *con = opaque;return ring_free_bytes (con);
hw/char/xilinx_uartlite.c +1 -1
@@ -195,7 +195,7 @@ static void uart_rx(void *opaque, const uint8_t *buf, size_t size)uart_update_irq (s); } -static int uart_can_rx (void *opaque) +static size_t uart_can_rx (void *opaque) {XilinxUARTLite *s = opaque;
hw/ipmi/ipmi_bmc_extern.c +1 -1
@@ -307,7 +307,7 @@ static void handle_msg(IPMIBmcExtern *ibe) k->handle_rsp (ibe->parent.intf, ibe->inbuf[0 ], ibe->inbuf +1 , ibe->inpos -1 ); } -static int can_receive (void *opaque) +static size_t can_receive (void *opaque) {return 1 ; }
hw/misc/ivshmem.c +1 -1
@@ -620,7 +620,7 @@ static void process_msg(IVShmemState *s, int64_t msg, int fd, Error **errp) } } -static int ivshmem_can_receive (void *opaque) +static size_t ivshmem_can_receive (void *opaque) {IVShmemState *s = opaque;
hw/riscv/riscv_htif.c +1 -1
@@ -65,7 +65,7 @@ void htif_symbol_callback(const char *st_name, int st_info, uint64_t st_value,/* * Called by the char dev to see if HTIF is ready to accept input. */ -static int htif_can_recv (void *opaque) +static size_t htif_can_recv (void *opaque) {return 1 ; }
hw/riscv/sifive_uart.c +1 -1
@@ -137,7 +137,7 @@ static void uart_rx(void *opaque, const uint8_t *buf, size_t size)update_irq (s); } -static int uart_can_rx (void *opaque) +static size_t uart_can_rx (void *opaque) {SiFiveUARTState *s = opaque;
hw/usb/ccid-card-passthru.c +1 -1
@@ -112,7 +112,7 @@ static void ccid_card_vscard_send_init(PassthruState *s) (uint8_t *)&msg, sizeof(msg)); } -static int ccid_card_vscard_can_read (void *opaque) +static size_t ccid_card_vscard_can_read (void *opaque) {PassthruState *card = opaque;
hw/usb/dev-serial.c +1 -1
@@ -421,7 +421,7 @@ static void usb_serial_handle_data(USBDevice *dev, USBPacket *p) } } -static int usb_serial_can_read (void *opaque) +static size_t usb_serial_can_read (void *opaque) {USBSerialState *s = opaque;
hw/usb/redirect.c +1 -1
@@ -1284,7 +1284,7 @@ static void usbredir_do_attach(void *opaque)* chardev callbacks */ -static int usbredir_chardev_can_read (void *opaque) +static size_t usbredir_chardev_can_read (void *opaque) {USBRedirDevice *dev = opaque;
include/qemu/main-loop.h +1 -1
@@ -182,7 +182,7 @@ typedef void IOReadHandler(void *opaque, const uint8_t *buf, size_t size);* is called again. aio_notify() or qemu_notify_event() can be used to kick * the event loop. */ -typedef int IOCanReadHandler (void *opaque); +typedef size_t IOCanReadHandler (void *opaque);/** * qemu_set_fd_handler: Register a file descriptor with the main loop
monitor.c +1 -1
@@ -4038,7 +4038,7 @@ cleanup:free_cmdline_args (args, nb_args); } -static int monitor_can_read (void *opaque) +static size_t monitor_can_read (void *opaque) {Monitor *mon = opaque;
net/colo-compare.c +1 -1
@@ -683,7 +683,7 @@ err:return ret <0 ? ret : -EIO ; } -static int compare_chr_can_read (void *opaque) +static size_t compare_chr_can_read (void *opaque) {return COMPARE_READ_LEN_MAX ; }
net/filter-mirror.c +1 -1
@@ -114,7 +114,7 @@ static void redirector_to_filter(NetFilterState *nf, } } -static int redirector_chr_can_read (void *opaque) +static size_t redirector_chr_can_read (void *opaque) {return REDIRECTOR_MAX_LEN ; }
net/slirp.c +1 -1
@@ -712,7 +712,7 @@ struct GuestFwd {Slirp *slirp; }; -static int guestfwd_can_read (void *opaque) +static size_t guestfwd_can_read (void *opaque) {struct GuestFwd *fwd = opaque;return slirp_socket_can_recv (fwd->slirp, fwd->server, fwd->port);
qtest.c +1 -1
@@ -665,7 +665,7 @@ static void qtest_read(void *opaque, const uint8_t *buf, size_t size)qtest_process_inbuf (chr, inbuf); } -static int qtest_can_read (void *opaque) +static size_t qtest_can_read (void *opaque) {return 1024 ; }
target/xtensa/xtensa-semi.c +1 -1
@@ -161,7 +161,7 @@ typedef struct XtensaSimConsole {static XtensaSimConsole *sim_console; -static int sim_console_can_read (void *opaque) +static size_t sim_console_can_read (void *opaque) {XtensaSimConsole *p = opaque;
Signature · 7 lines
2.17.1 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
PATCH v2 9/11 chardev: Let qemu_chr_fe_* use unsigned type
In reply to Philippe Mathieu-Daudé--- chardev/char-fe.c | 8 ++++---- chardev/char-win-stdio.c | 2 +- chardev/char-win.c | 2 +- include/chardev/char-fe.h | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-)
chardev/char-fe.c +4 -4
@@ -31,7 +31,7 @@#include "chardev/char-io.h" #include "chardev/char-mux.h" -int qemu_chr_fe_write (CharBackend *be,const uint8_t *buf,int len) +size_t qemu_chr_fe_write (CharBackend *be,const uint8_t *buf,size_t len) {Chardev *s = be->chr;
@@ -42,7 +42,7 @@ int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)return qemu_chr_write (s, buf, len, false); } -int qemu_chr_fe_write_all (CharBackend *be,const uint8_t *buf,int len) +size_t qemu_chr_fe_write_all (CharBackend *be,const uint8_t *buf,size_t len) {Chardev *s = be->chr;
@@ -53,10 +53,10 @@ int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)return qemu_chr_write (s, buf, len, true); } -int qemu_chr_fe_read_all (CharBackend *be,uint8_t *buf,int len) +size_t qemu_chr_fe_read_all (CharBackend *be,uint8_t *buf,size_t len) {Chardev *s = be->chr; -int offset =0 ; +size_t offset =0 ;int res;if (!s || !CHARDEV_GET_CLASS (s)->chr_sync_read) {
chardev/char-win-stdio.c +1 -1
@@ -221,7 +221,7 @@ static void char_win_stdio_finalize(Object *obj) } } -static int win_stdio_write (Chardev *chr,const uint8_t *buf,int len) +static size_t win_stdio_write (Chardev *chr,const uint8_t *buf,size_t len) {HANDLE hStdOut =GetStdHandle (STD_OUTPUT_HANDLE );DWORD dwSize;
chardev/char-win.c +1 -1
@@ -152,7 +152,7 @@ int win_chr_pipe_poll(void *opaque) }/* Called with chr_write_lock held. */ -static int win_chr_write (Chardev *chr,const uint8_t *buf,int len1) +static size_t win_chr_write (Chardev *chr,const uint8_t *buf,size_t len1) {WinChardev *s =WIN_CHARDEV (chr);DWORD len, ret, size, err;
include/chardev/char-fe.h +3 -3
@@ -184,7 +184,7 @@ guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,* * Returns: the number of bytes consumed (0 if no associated Chardev) */ -int qemu_chr_fe_write (CharBackend *be,const uint8_t *buf,int len); +size_t qemu_chr_fe_write (CharBackend *be,const uint8_t *buf,size_t len);/** * qemu_chr_fe_write_all:
@@ -198,7 +198,7 @@ int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len);* * Returns: the number of bytes consumed (0 if no associated Chardev) */ -int qemu_chr_fe_write_all (CharBackend *be,const uint8_t *buf,int len); +size_t qemu_chr_fe_write_all (CharBackend *be,const uint8_t *buf,size_t len);/** * qemu_chr_fe_read_all:
@@ -209,7 +209,7 @@ int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len);* * Returns: the number of bytes read (0 if no associated Chardev) */ -int qemu_chr_fe_read_all (CharBackend *be,uint8_t *buf,int len); +size_t qemu_chr_fe_read_all (CharBackend *be,uint8_t *buf,size_t len);/** * qemu_chr_fe_ioctl:
Signature · 1 line
2.17.1
PATCH v2 10/11 chardev: Let qemu_chr_be_* use unsigned type
In reply to Philippe Mathieu-DaudéSince IOCanReadHandler now returns an unsigned value, the assertion does not make sense anymore. We choose however to keep a "fail-safe" assertion to catch undesired overflows.
--- chardev/char.c | 17 +++++++++-------- include/chardev/char.h | 9 +++++---- include/sysemu/replay.h | 8 ++++---- replay/replay-char.c | 8 ++++---- stubs/replay.c | 8 ++++---- 5 files changed, 26 insertions(+), 24 deletions(-)
chardev/char.c +9 -8
@@ -100,7 +100,7 @@ static void qemu_chr_write_log(Chardev *s, const uint8_t *buf, size_t len)static int qemu_chr_write_buffer (Chardev *s,const uint8_t *buf,int len, -int *offset,bool write_all) +size_t *offset,bool write_all) {ChardevClass *cc =CHARDEV_GET_CLASS (s);int res =0 ;
@@ -132,9 +132,10 @@ static int qemu_chr_write_buffer(Chardev *s,return res; } -int qemu_chr_write (Chardev *s,const uint8_t *buf,int len,bool write_all) +size_t qemu_chr_write (Chardev *s,const uint8_t *buf,size_t len, +bool write_all) { -int offset =0 ; +size_t offset =0 ;int res;if (qemu_chr_replay (s) && replay_mode ==REPLAY_MODE_PLAY ) {
@@ -156,21 +157,21 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all)return offset; } -int qemu_chr_be_can_write (Chardev *s) +size_t qemu_chr_be_can_write (Chardev *s) {CharBackend *be = s->be; -int res; +size_t res;if (!be || !be->chr_can_read) {return 0 ; } res = be->chr_can_read (be->opaque); -assert (res >=0 ); +assert ((ssize_t )res >=0 );/* "fail-safe" assertion */ return res; } -void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,int len) +void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,size_t len) {CharBackend *be = s->be;
@@ -179,7 +180,7 @@ void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len) } } -void qemu_chr_be_write (Chardev *s,uint8_t *buf,int len) +void qemu_chr_be_write (Chardev *s,uint8_t *buf,size_t len) {if (qemu_chr_replay (s)) {if (replay_mode ==REPLAY_MODE_PLAY ) {
include/chardev/char.h +5 -4
@@ -163,7 +163,7 @@ Chardev *qemu_chr_new_noreplay(const char *label, const char *filename,* * Returns: the number of bytes the front end can receive via @qemu_chr_be_write */ -int qemu_chr_be_can_write (Chardev *s); +size_t qemu_chr_be_can_write (Chardev *s);/** * qemu_chr_be_write:
@@ -174,7 +174,7 @@ int qemu_chr_be_can_write(Chardev *s);* the caller should call @qemu_chr_be_can_write to determine how much data * the front end can currently accept. */ -void qemu_chr_be_write (Chardev *s,uint8_t *buf,int len); +void qemu_chr_be_write (Chardev *s,uint8_t *buf,size_t len);/** * qemu_chr_be_write_impl:
@@ -183,7 +183,7 @@ void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len);* * Implementation of back end writing. Used by replay module. */ -void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,int len); +void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,size_t len);/** * qemu_chr_be_update_read_handlers:
@@ -211,7 +211,8 @@ void qemu_chr_set_feature(Chardev *chr, ChardevFeature feature);QemuOpts *qemu_chr_parse_compat (const char *label,const char *filename,bool permit_mux_mon); -int qemu_chr_write (Chardev *s,const uint8_t *buf,int len,bool write_all); +size_t qemu_chr_write (Chardev *s,const uint8_t *buf,size_t len, +bool write_all);#define qemu_chr_write_all (s, buf, len) qemu_chr_write(s, buf, len, true)int qemu_chr_wait_connected (Chardev *chr,Error **errp);
include/sysemu/replay.h +4 -4
@@ -148,17 +148,17 @@ uint64_t blkreplay_next_id(void);/*! Registers char driver to save it's events */ void replay_register_char_driver (struct Chardev *chr);/*! Saves write to char device event to the log */ -void replay_chr_be_write (struct Chardev *s,uint8_t *buf,int len); +void replay_chr_be_write (struct Chardev *s,uint8_t *buf,size_t len);/*! Writes char write return value to the replay log. */ -void replay_char_write_event_save (int res,int offset); +void replay_char_write_event_save (int res,size_t offset);/*! Reads char write return value from the replay log. */ -void replay_char_write_event_load (int *res,int *offset); +void replay_char_write_event_load (int *res,size_t *offset);/*! Reads information about read_all character event. */ int replay_char_read_all_load (uint8_t *buf);/*! Writes character read_all error code into the replay log. */ void replay_char_read_all_save_error (int res);/*! Writes character read_all execution result into the replay log. */ -void replay_char_read_all_save_buf (uint8_t *buf,int offset); +void replay_char_read_all_save_buf (uint8_t *buf,size_t offset);/* Network */
replay/replay-char.c +4 -4
@@ -49,7 +49,7 @@ void replay_register_char_driver(Chardev *chr) char_drivers[drivers_count++] = chr; } -void replay_chr_be_write (Chardev *s,uint8_t *buf,int len) +void replay_chr_be_write (Chardev *s,uint8_t *buf,size_t len) {CharEvent *event =g_malloc0 (sizeof (CharEvent));
@@ -94,7 +94,7 @@ void *replay_event_char_read_load(void)return event; } -void replay_char_write_event_save (int res,int offset) +void replay_char_write_event_save (int res,size_t offset) {g_assert (replay_mutex_locked ());
@@ -104,7 +104,7 @@ void replay_char_write_event_save(int res, int offset)replay_put_dword (offset); } -void replay_char_write_event_load (int *res,int *offset) +void replay_char_write_event_load (int *res,size_t *offset) {g_assert (replay_mutex_locked ());
@@ -150,7 +150,7 @@ void replay_char_read_all_save_error(int res)replay_put_dword (res); } -void replay_char_read_all_save_buf (uint8_t *buf,int offset) +void replay_char_read_all_save_buf (uint8_t *buf,size_t offset) {g_assert (replay_mutex_locked ());replay_save_instructions ();
stubs/replay.c +4 -4
@@ -34,17 +34,17 @@ void replay_register_char_driver(Chardev *chr) { } -void replay_chr_be_write (Chardev *s,uint8_t *buf,int len) +void replay_chr_be_write (Chardev *s,uint8_t *buf,size_t len) {abort (); } -void replay_char_write_event_save (int res,int offset) +void replay_char_write_event_save (int res,size_t offset) {abort (); } -void replay_char_write_event_load (int *res,int *offset) +void replay_char_write_event_load (int *res,size_t *offset) {abort (); }
@@ -59,7 +59,7 @@ void replay_char_read_all_save_error(int res)abort (); } -void replay_char_read_all_save_buf (uint8_t *buf,int offset) +void replay_char_read_all_save_buf (uint8_t *buf,size_t offset) {abort (); }
Signature · 1 line
2.17.1
Re: [Qemu-devel] [PATCH v2 10/11] chardev: Let qemu_chr_be_* use unsigned type
Quoted 219 lines
From: Philippe Mathieu-Daudé [mailto:[email protected]] Since IOCanReadHandler now returns an unsigned value, the assertion does not make sense anymore. We choose however to keep a "fail-safe" assertion to catch undesired overflows.
Suggested-by Paolo Bonzini <[email protected]>Signed-off-by Philippe Mathieu-Daudé <[email protected]>--- chardev/char.c | 17 +++++++++-------- include/chardev/char.h | 9 +++++---- include/sysemu/replay.h | 8 ++++---- replay/replay-char.c | 8 ++++---- stubs/replay.c | 8 ++++---- 5 files changed, 26 insertions(+), 24 deletions(-)chardev/char.c +9
-8@@ -100,7 +100,7 @@ static void qemu_chr_write_log(Chardev *s, const uint8_t *buf, size_t len)static int qemu_chr_write_buffer (Chardev *s,const uint8_t *buf,int len, -int *offset,bool write_all) +size_t *offset,bool write_all) {ChardevClass *cc =CHARDEV_GET_CLASS (s);int res =0 ;@@ -132,9 +132,10 @@ static int qemu_chr_write_buffer(Chardev *s,return res; } -int qemu_chr_write (Chardev *s,const uint8_t *buf,int len,bool write_all) +size_t qemu_chr_write (Chardev *s,const uint8_t *buf,size_t len, +bool write_all) { -int offset =0 ; +size_t offset =0 ;int res;if (qemu_chr_replay (s) && replay_mode ==REPLAY_MODE_PLAY ) {@@ -156,21 +157,21 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all)return offset; } -int qemu_chr_be_can_write (Chardev *s) +size_t qemu_chr_be_can_write (Chardev *s) {CharBackend *be = s->be; -int res; +size_t res;if (!be || !be->chr_can_read) {return 0 ; } res = be->chr_can_read (be->opaque); -assert (res >=0 ); +assert ((ssize_t )res >=0 );/* "fail-safe" assertion */ return res; } -void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,int len) +void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,size_t len) {CharBackend *be = s->be;@@ -179,7 +180,7 @@ void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len) } } -void qemu_chr_be_write (Chardev *s,uint8_t *buf,int len) +void qemu_chr_be_write (Chardev *s,uint8_t *buf,size_t len) {if (qemu_chr_replay (s)) {if (replay_mode ==REPLAY_MODE_PLAY ) {include/chardev/char.h +5
-4@@ -163,7 +163,7 @@ Chardev *qemu_chr_new_noreplay(const char *label, const char *filename,* * Returns: the number of bytes the front end can receive via @qemu_chr_be_write */ -int qemu_chr_be_can_write (Chardev *s); +size_t qemu_chr_be_can_write (Chardev *s);/** * qemu_chr_be_write: @@ -174,7 +174,7 @@ int qemu_chr_be_can_write(Chardev *s);* the caller should call @qemu_chr_be_can_write to determine how much data * the front end can currently accept. */ -void qemu_chr_be_write (Chardev *s,uint8_t *buf,int len); +void qemu_chr_be_write (Chardev *s,uint8_t *buf,size_t len);/** * qemu_chr_be_write_impl: @@ -183,7 +183,7 @@ void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len);* * Implementation of back end writing. Used by replay module. */ -void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,int len); +void qemu_chr_be_write_impl (Chardev *s,uint8_t *buf,size_t len);/** * qemu_chr_be_update_read_handlers: @@ -211,7 +211,8 @@ void qemu_chr_set_feature(Chardev *chr, ChardevFeature feature);QemuOpts *qemu_chr_parse_compat (const char *label,const char *filename,bool permit_mux_mon); -int qemu_chr_write (Chardev *s,const uint8_t *buf,int len,bool write_all); +size_t qemu_chr_write (Chardev *s,const uint8_t *buf,size_t len, +bool write_all);#define qemu_chr_write_all (s, buf, len) qemu_chr_write(s, buf, len, true)int qemu_chr_wait_connected (Chardev *chr,Error **errp);include/sysemu/replay.h +4
-4@@ -148,17 +148,17 @@ uint64_t blkreplay_next_id(void);/*! Registers char driver to save it's events */ void replay_register_char_driver (struct Chardev *chr);/*! Saves write to char device event to the log */ -void replay_chr_be_write (struct Chardev *s,uint8_t *buf,int len); +void replay_chr_be_write (struct Chardev *s,uint8_t *buf,size_t len);/*! Writes char write return value to the replay log. */ -void replay_char_write_event_save (int res,int offset); +void replay_char_write_event_save (int res,size_t offset);/*! Reads char write return value from the replay log. */ -void replay_char_write_event_load (int *res,int *offset); +void replay_char_write_event_load (int *res,size_t *offset);/*! Reads information about read_all character event. */ int replay_char_read_all_load (uint8_t *buf);/*! Writes character read_all error code into the replay log. */ void replay_char_read_all_save_error (int res);/*! Writes character read_all execution result into the replay log. */ -void replay_char_read_all_save_buf (uint8_t *buf,int offset); +void replay_char_read_all_save_buf (uint8_t *buf,size_t offset);/* Network */ replay/replay-char.c +4
-4@@ -49,7 +49,7 @@ void replay_register_char_driver(Chardev *chr) char_drivers[drivers_count++] = chr; } -void replay_chr_be_write (Chardev *s,uint8_t *buf,int len) +void replay_chr_be_write (Chardev *s,uint8_t *buf,size_t len) {CharEvent *event =g_malloc0 (sizeof (CharEvent));@@ -94,7 +94,7 @@ void *replay_event_char_read_load(void)return event; } -void replay_char_write_event_save (int res,int offset) +void replay_char_write_event_save (int res,size_t offset) {g_assert (replay_mutex_locked ());@@ -104,7 +104,7 @@ void replay_char_write_event_save(int res, int offset)replay_put_dword (offset); } -void replay_char_write_event_load (int *res,int *offset) +void replay_char_write_event_load (int *res,size_t *offset) {g_assert (replay_mutex_locked ());@@ -150,7 +150,7 @@ void replay_char_read_all_save_error(int res)replay_put_dword (res); } -void replay_char_read_all_save_buf (uint8_t *buf,int offset) +void replay_char_read_all_save_buf (uint8_t *buf,size_t offset) {g_assert (replay_mutex_locked ());replay_save_instructions ();stubs/replay.c +4
-5@@ -34,17 +34,17 @@ void replay_register_char_driver(Chardev *chr) { } -void replay_chr_be_write (Chardev *s,uint8_t *buf,int len) +void replay_chr_be_write (Chardev *s,uint8_t *buf,size_t len) {abort (); } -void replay_char_write_event_save (int res,int offset) +void replay_char_write_event_save (int res,size_t offset) {abort (); } -void replay_char_write_event_load (int *res,int *offset) +void replay_char_write_event_load (int *res,size_t *offset) {abort (); }@@ -59,7 +59,7 @@ void replay_char_read_all_save_error(int res)abort (); } -void replay_char_read_all_save_buf (uint8_t *buf,int offset) +void replay_char_read_all_save_buf (uint8_t *buf,size_t offset) {abort (); } --
Quoted 1 line
2.17.1
What about casting to int here:
void replay_event_char_read_run(void *opaque)
{
CharEvent *event = (CharEvent *)opaque;
qemu_chr_be_write_impl(char_drivers[event->id], event->buf,
(int)event->len);
g_free(event->buf);
g_free(event);
}Pavel Dovgalyuk
PATCH v2 11/11 chardev: FDChardev::max_size be unsigned
In reply to Philippe Mathieu-Daudé--- chardev/char-fd.c | 2 +- include/chardev/char-fd.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
chardev/char-fd.c +1 -1
@@ -43,7 +43,7 @@ static gboolean fd_chr_read(QIOChannel *chan, GIOCondition cond, void *opaque) {Chardev *chr =CHARDEV (opaque);FDChardev *s =FD_CHARDEV (opaque); -int len; +size_t len;uint8_t buf[CHR_READ_BUF_LEN ];ssize_t ret;
include/chardev/char-fd.h +1 -1
@@ -31,7 +31,7 @@ typedef struct FDChardev {Chardev parent;QIOChannel *ioc_in, *ioc_out; -int max_size; +size_t max_size; } FDChardev;#define TYPE_CHARDEV_FD "chardev-fd"
Signature · 1 line
2.17.1
Re: [Qemu-devel] [PATCH v2 11/11] chardev: FDChardev::max_size be unsigned
Quoted 26 lines · Philippe Mathieu-Daudé
Suggested-by Paolo Bonzini <[email protected]>Signed-off-by Philippe Mathieu-Daudé <[email protected]>--- chardev/char-fd.c | 2 +- include/chardev/char-fd.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)chardev/char-fd.c +1
-1@@ -43,7 +43,7 @@ static gboolean fd_chr_read(QIOChannel *chan, GIOCondition cond, void *opaque) {Chardev *chr =CHARDEV (opaque);FDChardev *s =FD_CHARDEV (opaque); -int len; +size_t len;uint8_t buf[CHR_READ_BUF_LEN ];ssize_t ret;include/chardev/char-fd.h +0
-0
include/chardev/char-fd.h typedef struct FDChardev { · line 37
Quoted 8 lines
include/chardev/char-fd.h +1
-1@@ -31,7 +31,7 @@ typedef struct FDChardev {Chardev parent;QIOChannel *ioc_in, *ioc_out; -int max_size; +size_t max_size; } FDChardev;#define TYPE_CHARDEV_FD "chardev-fd"
This shouldn't be just for max_size, it should be for all variables that are set in the *_read_poll functions (those that you touch in patch 3).
These variables are than used very little, basically only in a
len = MAX(s->max_size, sizeof(buf))
statement, so this switch is safe. However, the order of the patches should be first 4, then this one (the assertion shows that the switch to unsigned is safe), then 5-6-9-10, then 7-8. If you convert implementations before users, the users could in principle overflow "int" when passing an arguments or storing its value.
All this of course should be documented in commit messages, which are a bit... scant in this series. :) I'm usually okay with very short commit messages when the changes are spread across many commits (in that case, I usually document what all the repetitive changes are in the patches before and/or after those changes), but in this case you are leaving out completely the "why" for the changes, and that's not really a good idea.
Finally, can you please include a patch to adjust the assertions in the USB smartcard code, as mentioned in my original reply to Prasad?
Thanks,
Paolo
Quoted 12 lines · Philippe Mathieu-Daudé
Hi Paolo,
Here are the changes you suggested in
https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02294.htmlFirst two simple cleanups while here,
then slowly convert backends then frontends.Regards,
Phil.
Quoted 12 lines
Philippe Mathieu-Daudé (11):
hw/ipmi: Remove unnecessary declarations target/xtensa: Remove unnecessary declarations
chardev: SimplifyIOWatchPoll::fd_can_readas a GSourceFunc
chardev: Assert backend'schr_can_read()is positive
chardev: Letchr_sync_read()use unsigned type
chardev: Letchr_writeuse unsigned type
chardev: Let IOReadHandler use unsigned type
chardev: Let IOCanReadHandler use unsigned type
chardev: Let qemu_chr_fe_* use unsigned type
chardev: Let qemu_chr_be_* use unsigned type
chardev:FDChardev::max_sizebe unsigned
s/unsigned/size_t/ in all these commit messages, as it looked like you meant 'unsigned int' with the current commit msg.
Regards,
Daniel
Signature · 3 lines
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
Quoted 17 lines · Daniel P. Berrangé
Quoted 6 lines · Philippe Mathieu-Daudé
Hi Paolo,
Here are the changes you suggested in
https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02294.htmlQuoted 9 lines
chardev: Simplify
IOWatchPoll::fd_can_readas a GSourceFunc
chardev: Assert backend'schr_can_read()is positive
chardev: Letchr_sync_read()use unsigned type
chardev: Letchr_writeuse unsigned type
chardev: Let IOReadHandler use unsigned type
chardev: Let IOCanReadHandler use unsigned type
chardev: Let qemu_chr_fe_* use unsigned type
chardev: Let qemu_chr_be_* use unsigned type
chardev:FDChardev::max_sizebe unsigned
Quoted 2 lines
s/unsigned/size_t/ in all these commit messages, as it looked like you meant 'unsigned int' with the current commit msg.
Sure.
Paolo, any blocking comment before I fix the bitrotten places?
Quoted 18 lines · Philippe Mathieu-Daudé
Quoted 17 lines · Daniel P. Berrangé
Quoted 15 lines · Philippe Mathieu-Daudé
Hi Paolo,
Here are the changes you suggested in
https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg02294.htmlchardev: Simplify
IOWatchPoll::fd_can_readas a GSourceFunc
chardev: Assert backend'schr_can_read()is positive
chardev: Letchr_sync_read()use unsigned type
chardev: Letchr_writeuse unsigned type
chardev: Let IOReadHandler use unsigned type
chardev: Let IOCanReadHandler use unsigned type
chardev: Let qemu_chr_fe_* use unsigned type
chardev: Let qemu_chr_be_* use unsigned type
chardev:FDChardev::max_sizebe unsigned
Quoted 6 lines
Quoted 2 lines
s/unsigned/size_t/ in all these commit messages, as it looked like you meant 'unsigned int' with the current commit msg.
Sure.
Paolo, any blocking comment before I fix the bitrotten places?
Doh, I just noticed your comments in the last patch:
https://lore.kernel.org/qemu-devel/[email protected]/