From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:41326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwGR7-0005xU-MD for qemu-devel@nongnu.org; Tue, 19 Feb 2019 20:12:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gwGIz-0001iT-VB for qemu-devel@nongnu.org; Tue, 19 Feb 2019 20:04:11 -0500 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 20 Feb 2019 02:02:11 +0100 Message-Id: <20190220010232.18731-5-philmd@redhat.com> In-Reply-To: <20190220010232.18731-1-philmd@redhat.com> References: <20190220010232.18731-1-philmd@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v3 04/25] chardev: Let qemu_chr_be_can_write() return a size_t types List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Prasad J Pandit , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Cc: Jason Wang , Anthony Perard , qemu-ppc@nongnu.org, Stefan Berger , David Gibson , Gerd Hoffmann , Zhang Chen , xen-devel@lists.xenproject.org, Cornelia Huck , Samuel Thibault , Christian Borntraeger , Amit Shah , Li Zhijian , Corey Minyard , "Michael S. Tsirkin" , Paul Durrant , Halil Pasic , Stefano Stabellini , qemu-s390x@nongnu.org, Pavel Dovgalyuk , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= In the previous commit we added an assert to be sure than qemu_chr_be_can_write() will never return a negative value. We can now change its prototype to return a size_t. Adapt the backends accordingly. Suggested-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- chardev/baum.c | 6 +++--- chardev/char-fd.c | 2 +- chardev/char-pty.c | 4 ++-- chardev/char-socket.c | 7 ++++--- chardev/char-udp.c | 4 ++-- chardev/char-win.c | 2 +- chardev/char.c | 2 +- chardev/msmouse.c | 4 ++-- chardev/spice.c | 2 +- chardev/wctablet.c | 4 ++-- hw/bt/hci-csr.c | 2 +- include/chardev/char-fd.h | 2 +- include/chardev/char.h | 2 +- ui/console.c | 6 +++--- 14 files changed, 25 insertions(+), 24 deletions(-) diff --git a/chardev/baum.c b/chardev/baum.c index 78b0c87625..1d69d62158 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -265,7 +265,7 @@ static int baum_deferred_init(BaumChardev *baum) static void baum_chr_accept_input(struct Chardev *chr) { BaumChardev *baum =3D BAUM_CHARDEV(chr); - int room, first; + size_t room, first; =20 if (!baum->out_buf_used) return; @@ -292,7 +292,7 @@ static void baum_write_packet(BaumChardev *baum, cons= t uint8_t *buf, int len) { Chardev *chr =3D CHARDEV(baum); uint8_t io_buf[1 + 2 * len], *cur =3D io_buf; - int room; + size_t room; *cur++ =3D ESC; while (len--) if ((*cur++ =3D *buf++) =3D=3D ESC) @@ -303,7 +303,7 @@ static void baum_write_packet(BaumChardev *baum, cons= t uint8_t *buf, int len) /* Fits */ qemu_chr_be_write(chr, io_buf, len); } else { - int first; + size_t first; uint8_t out; /* Can't fit all, send what can be, and store the rest. */ qemu_chr_be_write(chr, io_buf, room); diff --git a/chardev/char-fd.c b/chardev/char-fd.c index 2421d8e216..0fe2822869 100644 --- a/chardev/char-fd.c +++ b/chardev/char-fd.c @@ -43,7 +43,7 @@ static gboolean fd_chr_read(QIOChannel *chan, GIOCondit= ion cond, void *opaque) { Chardev *chr =3D CHARDEV(opaque); FDChardev *s =3D FD_CHARDEV(opaque); - int len; + size_t len; uint8_t buf[CHR_READ_BUF_LEN]; ssize_t ret; =20 diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 7777f6ddef..eae25f043b 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -34,7 +34,7 @@ typedef struct { Chardev parent; QIOChannel *ioc; - int read_bytes; + size_t read_bytes; =20 int connected; GSource *timer_src; @@ -132,7 +132,7 @@ static gboolean pty_chr_read(QIOChannel *chan, GIOCon= dition cond, void *opaque) { Chardev *chr =3D CHARDEV(opaque); PtyChardev *s =3D PTY_CHARDEV(opaque); - gsize len; + size_t len; uint8_t buf[CHR_READ_BUF_LEN]; ssize_t ret; =20 diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 262a59b64f..4010c343e0 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -60,7 +60,7 @@ typedef struct { GSource *hup_source; QCryptoTLSCreds *tls_creds; TCPChardevState state; - int max_size; + size_t max_size; int do_telnetopt; int do_nodelay; int *read_msgfds; @@ -493,10 +493,11 @@ static gboolean tcp_chr_read(QIOChannel *chan, GIOC= ondition cond, void *opaque) Chardev *chr =3D CHARDEV(opaque); SocketChardev *s =3D SOCKET_CHARDEV(opaque); uint8_t buf[CHR_READ_BUF_LEN]; - int len, size; + size_t len; + int size; =20 if ((s->state !=3D TCP_CHARDEV_STATE_CONNECTED) || - s->max_size <=3D 0) { + s->max_size =3D=3D 0) { return TRUE; } len =3D sizeof(buf); diff --git a/chardev/char-udp.c b/chardev/char-udp.c index b6e399e983..d4f40626e4 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -39,7 +39,7 @@ typedef struct { uint8_t buf[CHR_READ_BUF_LEN]; int bufcnt; int bufptr; - int max_size; + size_t max_size; } UdpChardev; =20 #define UDP_CHARDEV(obj) OBJECT_CHECK(UdpChardev, (obj), TYPE_CHARDEV_UD= P) @@ -58,7 +58,7 @@ static void udp_chr_flush_buffer(UdpChardev *s) Chardev *chr =3D CHARDEV(s); =20 while (s->max_size > 0 && s->bufptr < s->bufcnt) { - int n =3D MIN(s->max_size, s->bufcnt - s->bufptr); + size_t n =3D MIN(s->max_size, s->bufcnt - s->bufptr); qemu_chr_be_write(chr, &s->buf[s->bufptr], n); s->bufptr +=3D n; s->max_size =3D qemu_chr_be_can_write(chr); diff --git a/chardev/char-win.c b/chardev/char-win.c index 05518e0958..30361e8852 100644 --- a/chardev/char-win.c +++ b/chardev/char-win.c @@ -29,7 +29,7 @@ static void win_chr_read(Chardev *chr, DWORD len) { WinChardev *s =3D WIN_CHARDEV(chr); - int max_size =3D qemu_chr_be_can_write(chr); + size_t max_size =3D qemu_chr_be_can_write(chr); int ret, err; uint8_t buf[CHR_READ_BUF_LEN]; DWORD size; diff --git a/chardev/char.c b/chardev/char.c index 71ecd32b25..3149cd3ba9 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -156,7 +156,7 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, in= t len, bool write_all) return offset; } =20 -int qemu_chr_be_can_write(Chardev *s) +size_t qemu_chr_be_can_write(Chardev *s) { CharBackend *be =3D s->be; int receivable_bytes; diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 0ffd137ce8..cdb6f86037 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -38,7 +38,7 @@ typedef struct { bool btns[INPUT_BUTTON__MAX]; bool btnc[INPUT_BUTTON__MAX]; uint8_t outbuf[32]; - int outlen; + size_t outlen; } MouseChardev; =20 #define TYPE_CHARDEV_MSMOUSE "chardev-msmouse" @@ -48,7 +48,7 @@ typedef struct { static void msmouse_chr_accept_input(Chardev *chr) { MouseChardev *mouse =3D MOUSE_CHARDEV(chr); - int len; + size_t len; =20 len =3D qemu_chr_be_can_write(chr); if (len > mouse->outlen) { diff --git a/chardev/spice.c b/chardev/spice.c index 173c257949..ad180a8a13 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -43,7 +43,7 @@ static int vmc_write(SpiceCharDeviceInstance *sin, cons= t uint8_t *buf, int len) uint8_t* p =3D (uint8_t*)buf; =20 while (len > 0) { - int can_write =3D qemu_chr_be_can_write(chr); + size_t can_write =3D qemu_chr_be_can_write(chr); last_out =3D MIN(len, can_write); if (last_out <=3D 0) { break; diff --git a/chardev/wctablet.c b/chardev/wctablet.c index cf7a08a363..daae570bc7 100644 --- a/chardev/wctablet.c +++ b/chardev/wctablet.c @@ -74,7 +74,7 @@ typedef struct { =20 /* Command to be sent to serial port */ uint8_t outbuf[WC_OUTPUT_BUF_MAX_LEN]; - int outlen; + size_t outlen; =20 int line_speed; bool send_events; @@ -186,7 +186,7 @@ static QemuInputHandler wctablet_handler =3D { static void wctablet_chr_accept_input(Chardev *chr) { TabletChardev *tablet =3D WCTABLET_CHARDEV(chr); - int len, canWrite; + size_t len, canWrite; =20 canWrite =3D qemu_chr_be_can_write(chr); len =3D canWrite; diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c index fa6660a113..e837a3fa1f 100644 --- a/hw/bt/hci-csr.c +++ b/hw/bt/hci-csr.c @@ -38,7 +38,7 @@ struct csrhci_s { #define FIFO_LEN 4096 int out_start; int out_len; - int out_size; + size_t out_size; uint8_t outfifo[FIFO_LEN * 2]; uint8_t inpkt[FIFO_LEN]; enum { diff --git a/include/chardev/char-fd.h b/include/chardev/char-fd.h index e7c2b176f9..36c6b89cee 100644 --- a/include/chardev/char-fd.h +++ b/include/chardev/char-fd.h @@ -31,7 +31,7 @@ typedef struct FDChardev { Chardev parent; =20 QIOChannel *ioc_in, *ioc_out; - int max_size; + size_t max_size; } FDChardev; =20 #define TYPE_CHARDEV_FD "chardev-fd" diff --git a/include/chardev/char.h b/include/chardev/char.h index c0b57f7685..0341dd1ba2 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -173,7 +173,7 @@ Chardev *qemu_chr_new_noreplay(const char *label, con= st 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); =20 /** * qemu_chr_be_write: diff --git a/ui/console.c b/ui/console.c index 6d2282d3e9..42f04e2b37 100644 --- a/ui/console.c +++ b/ui/console.c @@ -61,8 +61,8 @@ enum TTYState { =20 typedef struct QEMUFIFO { uint8_t *buf; - int buf_size; - int count, wptr, rptr; + size_t buf_size, count; + int wptr, rptr; } QEMUFIFO; =20 static int qemu_fifo_write(QEMUFIFO *f, const uint8_t *buf, int len1) @@ -1110,7 +1110,7 @@ static int vc_chr_write(Chardev *chr, const uint8_t= *buf, int len) static void kbd_send_chars(void *opaque) { QemuConsole *s =3D opaque; - int len; + size_t len; uint8_t buf[16]; =20 len =3D qemu_chr_be_can_write(s->chr); --=20 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v3 04/25] chardev: Let qemu_chr_be_can_write() return a size_t types Date: Wed, 20 Feb 2019 02:02:11 +0100 Message-ID: <20190220010232.18731-5-philmd@redhat.com> References: <20190220010232.18731-1-philmd@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gwGJR-0000Ri-8e for xen-devel@lists.xenproject.org; Wed, 20 Feb 2019 01:04:37 +0000 In-Reply-To: <20190220010232.18731-1-philmd@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org, Prasad J Pandit , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Cc: Corey Minyard , Stefano Stabellini , Samuel Thibault , Li Zhijian , Amit Shah , "Michael S. Tsirkin" , Jason Wang , Cornelia Huck , Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, Paul Durrant , qemu-ppc@nongnu.org, Gerd Hoffmann , Pavel Dovgalyuk , Zhang Chen , Anthony Perard , xen-devel@lists.xenproject.org, Stefan Berger , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , David Gibson List-Id: xen-devel@lists.xenproject.org SW4gdGhlIHByZXZpb3VzIGNvbW1pdCB3ZSBhZGRlZCBhbiBhc3NlcnQgdG8gYmUgc3VyZSB0aGFu CnFlbXVfY2hyX2JlX2Nhbl93cml0ZSgpIHdpbGwgbmV2ZXIgcmV0dXJuIGEgbmVnYXRpdmUgdmFs dWUuCldlIGNhbiBub3cgY2hhbmdlIGl0cyBwcm90b3R5cGUgdG8gcmV0dXJuIGEgc2l6ZV90LgpB ZGFwdCB0aGUgYmFja2VuZHMgYWNjb3JkaW5nbHkuCgpTdWdnZXN0ZWQtYnk6IFBhb2xvIEJvbnpp bmkgPHBib256aW5pQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IFBoaWxpcHBlIE1hdGhpZXUt RGF1ZMOpIDxwaGlsbWRAcmVkaGF0LmNvbT4KLS0tCiBjaGFyZGV2L2JhdW0uYyAgICAgICAgICAg IHwgNiArKystLS0KIGNoYXJkZXYvY2hhci1mZC5jICAgICAgICAgfCAyICstCiBjaGFyZGV2L2No YXItcHR5LmMgICAgICAgIHwgNCArKy0tCiBjaGFyZGV2L2NoYXItc29ja2V0LmMgICAgIHwgNyAr KysrLS0tCiBjaGFyZGV2L2NoYXItdWRwLmMgICAgICAgIHwgNCArKy0tCiBjaGFyZGV2L2NoYXIt d2luLmMgICAgICAgIHwgMiArLQogY2hhcmRldi9jaGFyLmMgICAgICAgICAgICB8IDIgKy0KIGNo YXJkZXYvbXNtb3VzZS5jICAgICAgICAgfCA0ICsrLS0KIGNoYXJkZXYvc3BpY2UuYyAgICAgICAg ICAgfCAyICstCiBjaGFyZGV2L3djdGFibGV0LmMgICAgICAgIHwgNCArKy0tCiBody9idC9oY2kt Y3NyLmMgICAgICAgICAgIHwgMiArLQogaW5jbHVkZS9jaGFyZGV2L2NoYXItZmQuaCB8IDIgKy0K IGluY2x1ZGUvY2hhcmRldi9jaGFyLmggICAgfCAyICstCiB1aS9jb25zb2xlLmMgICAgICAgICAg ICAgIHwgNiArKystLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDI0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NoYXJkZXYvYmF1bS5jIGIvY2hhcmRldi9iYXVtLmMK aW5kZXggNzhiMGM4NzYyNS4uMWQ2OWQ2MjE1OCAxMDA2NDQKLS0tIGEvY2hhcmRldi9iYXVtLmMK KysrIGIvY2hhcmRldi9iYXVtLmMKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgaW50IGJhdW1f ZGVmZXJyZWRfaW5pdChCYXVtQ2hhcmRldiAqYmF1bSkKIHN0YXRpYyB2b2lkIGJhdW1fY2hyX2Fj Y2VwdF9pbnB1dChzdHJ1Y3QgQ2hhcmRldiAqY2hyKQogewogICAgIEJhdW1DaGFyZGV2ICpiYXVt ID0gQkFVTV9DSEFSREVWKGNocik7Ci0gICAgaW50IHJvb20sIGZpcnN0OworICAgIHNpemVfdCBy b29tLCBmaXJzdDsKIAogICAgIGlmICghYmF1bS0+b3V0X2J1Zl91c2VkKQogICAgICAgICByZXR1 cm47CkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIHZvaWQgYmF1bV93cml0ZV9wYWNrZXQoQmF1 bUNoYXJkZXYgKmJhdW0sIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKIHsKICAgICBDaGFy ZGV2ICpjaHIgPSBDSEFSREVWKGJhdW0pOwogICAgIHVpbnQ4X3QgaW9fYnVmWzEgKyAyICogbGVu XSwgKmN1ciA9IGlvX2J1ZjsKLSAgICBpbnQgcm9vbTsKKyAgICBzaXplX3Qgcm9vbTsKICAgICAq Y3VyKysgPSBFU0M7CiAgICAgd2hpbGUgKGxlbi0tKQogICAgICAgICBpZiAoKCpjdXIrKyA9ICpi dWYrKykgPT0gRVNDKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHN0YXRpYyB2b2lkIGJhdW1fd3JpdGVf cGFja2V0KEJhdW1DaGFyZGV2ICpiYXVtLCBjb25zdCB1aW50OF90ICpidWYsIGludCBsZW4pCiAg ICAgICAgIC8qIEZpdHMgKi8KICAgICAgICAgcWVtdV9jaHJfYmVfd3JpdGUoY2hyLCBpb19idWYs IGxlbik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW50IGZpcnN0OworICAgICAgICBzaXplX3Qg Zmlyc3Q7CiAgICAgICAgIHVpbnQ4X3Qgb3V0OwogICAgICAgICAvKiBDYW4ndCBmaXQgYWxsLCBz ZW5kIHdoYXQgY2FuIGJlLCBhbmQgc3RvcmUgdGhlIHJlc3QuICovCiAgICAgICAgIHFlbXVfY2hy X2JlX3dyaXRlKGNociwgaW9fYnVmLCByb29tKTsKZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci1m ZC5jIGIvY2hhcmRldi9jaGFyLWZkLmMKaW5kZXggMjQyMWQ4ZTIxNi4uMGZlMjgyMjg2OSAxMDA2 NDQKLS0tIGEvY2hhcmRldi9jaGFyLWZkLmMKKysrIGIvY2hhcmRldi9jaGFyLWZkLmMKQEAgLTQz LDcgKzQzLDcgQEAgc3RhdGljIGdib29sZWFuIGZkX2Nocl9yZWFkKFFJT0NoYW5uZWwgKmNoYW4s IEdJT0NvbmRpdGlvbiBjb25kLCB2b2lkICpvcGFxdWUpCiB7CiAgICAgQ2hhcmRldiAqY2hyID0g Q0hBUkRFVihvcGFxdWUpOwogICAgIEZEQ2hhcmRldiAqcyA9IEZEX0NIQVJERVYob3BhcXVlKTsK LSAgICBpbnQgbGVuOworICAgIHNpemVfdCBsZW47CiAgICAgdWludDhfdCBidWZbQ0hSX1JFQURf QlVGX0xFTl07CiAgICAgc3NpemVfdCByZXQ7CiAKZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci1w dHkuYyBiL2NoYXJkZXYvY2hhci1wdHkuYwppbmRleCA3Nzc3ZjZkZGVmLi5lYWUyNWYwNDNiIDEw MDY0NAotLS0gYS9jaGFyZGV2L2NoYXItcHR5LmMKKysrIGIvY2hhcmRldi9jaGFyLXB0eS5jCkBA IC0zNCw3ICszNCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgQ2hhcmRldiBwYXJlbnQ7CiAg ICAgUUlPQ2hhbm5lbCAqaW9jOwotICAgIGludCByZWFkX2J5dGVzOworICAgIHNpemVfdCByZWFk X2J5dGVzOwogCiAgICAgaW50IGNvbm5lY3RlZDsKICAgICBHU291cmNlICp0aW1lcl9zcmM7CkBA IC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGdib29sZWFuIHB0eV9jaHJfcmVhZChRSU9DaGFubmVs ICpjaGFuLCBHSU9Db25kaXRpb24gY29uZCwgdm9pZCAqb3BhcXVlKQogewogICAgIENoYXJkZXYg KmNociA9IENIQVJERVYob3BhcXVlKTsKICAgICBQdHlDaGFyZGV2ICpzID0gUFRZX0NIQVJERVYo b3BhcXVlKTsKLSAgICBnc2l6ZSBsZW47CisgICAgc2l6ZV90IGxlbjsKICAgICB1aW50OF90IGJ1 ZltDSFJfUkVBRF9CVUZfTEVOXTsKICAgICBzc2l6ZV90IHJldDsKIApkaWZmIC0tZ2l0IGEvY2hh cmRldi9jaGFyLXNvY2tldC5jIGIvY2hhcmRldi9jaGFyLXNvY2tldC5jCmluZGV4IDI2MmE1OWI2 NGYuLjQwMTBjMzQzZTAgMTAwNjQ0Ci0tLSBhL2NoYXJkZXYvY2hhci1zb2NrZXQuYworKysgYi9j aGFyZGV2L2NoYXItc29ja2V0LmMKQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewog ICAgIEdTb3VyY2UgKmh1cF9zb3VyY2U7CiAgICAgUUNyeXB0b1RMU0NyZWRzICp0bHNfY3JlZHM7 CiAgICAgVENQQ2hhcmRldlN0YXRlIHN0YXRlOwotICAgIGludCBtYXhfc2l6ZTsKKyAgICBzaXpl X3QgbWF4X3NpemU7CiAgICAgaW50IGRvX3RlbG5ldG9wdDsKICAgICBpbnQgZG9fbm9kZWxheTsK ICAgICBpbnQgKnJlYWRfbXNnZmRzOwpAQCAtNDkzLDEwICs0OTMsMTEgQEAgc3RhdGljIGdib29s ZWFuIHRjcF9jaHJfcmVhZChRSU9DaGFubmVsICpjaGFuLCBHSU9Db25kaXRpb24gY29uZCwgdm9p ZCAqb3BhcXVlKQogICAgIENoYXJkZXYgKmNociA9IENIQVJERVYob3BhcXVlKTsKICAgICBTb2Nr ZXRDaGFyZGV2ICpzID0gU09DS0VUX0NIQVJERVYob3BhcXVlKTsKICAgICB1aW50OF90IGJ1ZltD SFJfUkVBRF9CVUZfTEVOXTsKLSAgICBpbnQgbGVuLCBzaXplOworICAgIHNpemVfdCBsZW47Cisg ICAgaW50IHNpemU7CiAKICAgICBpZiAoKHMtPnN0YXRlICE9IFRDUF9DSEFSREVWX1NUQVRFX0NP Tk5FQ1RFRCkgfHwKLSAgICAgICAgcy0+bWF4X3NpemUgPD0gMCkgeworICAgICAgICBzLT5tYXhf c2l6ZSA9PSAwKSB7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KICAgICBsZW4gPSBzaXpl b2YoYnVmKTsKZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci11ZHAuYyBiL2NoYXJkZXYvY2hhci11 ZHAuYwppbmRleCBiNmUzOTllOTgzLi5kNGY0MDYyNmU0IDEwMDY0NAotLS0gYS9jaGFyZGV2L2No YXItdWRwLmMKKysrIGIvY2hhcmRldi9jaGFyLXVkcC5jCkBAIC0zOSw3ICszOSw3IEBAIHR5cGVk ZWYgc3RydWN0IHsKICAgICB1aW50OF90IGJ1ZltDSFJfUkVBRF9CVUZfTEVOXTsKICAgICBpbnQg YnVmY250OwogICAgIGludCBidWZwdHI7Ci0gICAgaW50IG1heF9zaXplOworICAgIHNpemVfdCBt YXhfc2l6ZTsKIH0gVWRwQ2hhcmRldjsKIAogI2RlZmluZSBVRFBfQ0hBUkRFVihvYmopIE9CSkVD VF9DSEVDSyhVZHBDaGFyZGV2LCAob2JqKSwgVFlQRV9DSEFSREVWX1VEUCkKQEAgLTU4LDcgKzU4 LDcgQEAgc3RhdGljIHZvaWQgdWRwX2Nocl9mbHVzaF9idWZmZXIoVWRwQ2hhcmRldiAqcykKICAg ICBDaGFyZGV2ICpjaHIgPSBDSEFSREVWKHMpOwogCiAgICAgd2hpbGUgKHMtPm1heF9zaXplID4g MCAmJiBzLT5idWZwdHIgPCBzLT5idWZjbnQpIHsKLSAgICAgICAgaW50IG4gPSBNSU4ocy0+bWF4 X3NpemUsIHMtPmJ1ZmNudCAtIHMtPmJ1ZnB0cik7CisgICAgICAgIHNpemVfdCBuID0gTUlOKHMt Pm1heF9zaXplLCBzLT5idWZjbnQgLSBzLT5idWZwdHIpOwogICAgICAgICBxZW11X2Nocl9iZV93 cml0ZShjaHIsICZzLT5idWZbcy0+YnVmcHRyXSwgbik7CiAgICAgICAgIHMtPmJ1ZnB0ciArPSBu OwogICAgICAgICBzLT5tYXhfc2l6ZSA9IHFlbXVfY2hyX2JlX2Nhbl93cml0ZShjaHIpOwpkaWZm IC0tZ2l0IGEvY2hhcmRldi9jaGFyLXdpbi5jIGIvY2hhcmRldi9jaGFyLXdpbi5jCmluZGV4IDA1 NTE4ZTA5NTguLjMwMzYxZTg4NTIgMTAwNjQ0Ci0tLSBhL2NoYXJkZXYvY2hhci13aW4uYworKysg Yi9jaGFyZGV2L2NoYXItd2luLmMKQEAgLTI5LDcgKzI5LDcgQEAKIHN0YXRpYyB2b2lkIHdpbl9j aHJfcmVhZChDaGFyZGV2ICpjaHIsIERXT1JEIGxlbikKIHsKICAgICBXaW5DaGFyZGV2ICpzID0g V0lOX0NIQVJERVYoY2hyKTsKLSAgICBpbnQgbWF4X3NpemUgPSBxZW11X2Nocl9iZV9jYW5fd3Jp dGUoY2hyKTsKKyAgICBzaXplX3QgbWF4X3NpemUgPSBxZW11X2Nocl9iZV9jYW5fd3JpdGUoY2hy KTsKICAgICBpbnQgcmV0LCBlcnI7CiAgICAgdWludDhfdCBidWZbQ0hSX1JFQURfQlVGX0xFTl07 CiAgICAgRFdPUkQgc2l6ZTsKZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci5jIGIvY2hhcmRldi9j aGFyLmMKaW5kZXggNzFlY2QzMmIyNS4uMzE0OWNkM2JhOSAxMDA2NDQKLS0tIGEvY2hhcmRldi9j aGFyLmMKKysrIGIvY2hhcmRldi9jaGFyLmMKQEAgLTE1Niw3ICsxNTYsNyBAQCBpbnQgcWVtdV9j aHJfd3JpdGUoQ2hhcmRldiAqcywgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBib29sIHdy aXRlX2FsbCkKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1pbnQgcWVtdV9jaHJfYmVfY2FuX3dy aXRlKENoYXJkZXYgKnMpCitzaXplX3QgcWVtdV9jaHJfYmVfY2FuX3dyaXRlKENoYXJkZXYgKnMp CiB7CiAgICAgQ2hhckJhY2tlbmQgKmJlID0gcy0+YmU7CiAgICAgaW50IHJlY2VpdmFibGVfYnl0 ZXM7CmRpZmYgLS1naXQgYS9jaGFyZGV2L21zbW91c2UuYyBiL2NoYXJkZXYvbXNtb3VzZS5jCmlu ZGV4IDBmZmQxMzdjZTguLmNkYjZmODYwMzcgMTAwNjQ0Ci0tLSBhL2NoYXJkZXYvbXNtb3VzZS5j CisrKyBiL2NoYXJkZXYvbXNtb3VzZS5jCkBAIC0zOCw3ICszOCw3IEBAIHR5cGVkZWYgc3RydWN0 IHsKICAgICBib29sIGJ0bnNbSU5QVVRfQlVUVE9OX19NQVhdOwogICAgIGJvb2wgYnRuY1tJTlBV VF9CVVRUT05fX01BWF07CiAgICAgdWludDhfdCBvdXRidWZbMzJdOwotICAgIGludCBvdXRsZW47 CisgICAgc2l6ZV90IG91dGxlbjsKIH0gTW91c2VDaGFyZGV2OwogCiAjZGVmaW5lIFRZUEVfQ0hB UkRFVl9NU01PVVNFICJjaGFyZGV2LW1zbW91c2UiCkBAIC00OCw3ICs0OCw3IEBAIHR5cGVkZWYg c3RydWN0IHsKIHN0YXRpYyB2b2lkIG1zbW91c2VfY2hyX2FjY2VwdF9pbnB1dChDaGFyZGV2ICpj aHIpCiB7CiAgICAgTW91c2VDaGFyZGV2ICptb3VzZSA9IE1PVVNFX0NIQVJERVYoY2hyKTsKLSAg ICBpbnQgbGVuOworICAgIHNpemVfdCBsZW47CiAKICAgICBsZW4gPSBxZW11X2Nocl9iZV9jYW5f d3JpdGUoY2hyKTsKICAgICBpZiAobGVuID4gbW91c2UtPm91dGxlbikgewpkaWZmIC0tZ2l0IGEv Y2hhcmRldi9zcGljZS5jIGIvY2hhcmRldi9zcGljZS5jCmluZGV4IDE3M2MyNTc5NDkuLmFkMTgw YThhMTMgMTAwNjQ0Ci0tLSBhL2NoYXJkZXYvc3BpY2UuYworKysgYi9jaGFyZGV2L3NwaWNlLmMK QEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGludCB2bWNfd3JpdGUoU3BpY2VDaGFyRGV2aWNlSW5z dGFuY2UgKnNpbiwgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgbGVuKQogICAgIHVpbnQ4X3QqIHAg PSAodWludDhfdCopYnVmOwogCiAgICAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICAgICAgaW50IGNh bl93cml0ZSA9IHFlbXVfY2hyX2JlX2Nhbl93cml0ZShjaHIpOworICAgICAgICBzaXplX3QgY2Fu X3dyaXRlID0gcWVtdV9jaHJfYmVfY2FuX3dyaXRlKGNocik7CiAgICAgICAgIGxhc3Rfb3V0ID0g TUlOKGxlbiwgY2FuX3dyaXRlKTsKICAgICAgICAgaWYgKGxhc3Rfb3V0IDw9IDApIHsKICAgICAg ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvY2hhcmRldi93Y3RhYmxldC5jIGIvY2hhcmRldi93 Y3RhYmxldC5jCmluZGV4IGNmN2EwOGEzNjMuLmRhYWU1NzBiYzcgMTAwNjQ0Ci0tLSBhL2NoYXJk ZXYvd2N0YWJsZXQuYworKysgYi9jaGFyZGV2L3djdGFibGV0LmMKQEAgLTc0LDcgKzc0LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgewogCiAgICAgLyogQ29tbWFuZCB0byBiZSBzZW50IHRvIHNlcmlhbCBw b3J0ICovCiAgICAgdWludDhfdCBvdXRidWZbV0NfT1VUUFVUX0JVRl9NQVhfTEVOXTsKLSAgICBp bnQgb3V0bGVuOworICAgIHNpemVfdCBvdXRsZW47CiAKICAgICBpbnQgbGluZV9zcGVlZDsKICAg ICBib29sIHNlbmRfZXZlbnRzOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYyBRZW11SW5wdXRI YW5kbGVyIHdjdGFibGV0X2hhbmRsZXIgPSB7CiBzdGF0aWMgdm9pZCB3Y3RhYmxldF9jaHJfYWNj ZXB0X2lucHV0KENoYXJkZXYgKmNocikKIHsKICAgICBUYWJsZXRDaGFyZGV2ICp0YWJsZXQgPSBX Q1RBQkxFVF9DSEFSREVWKGNocik7Ci0gICAgaW50IGxlbiwgY2FuV3JpdGU7CisgICAgc2l6ZV90 IGxlbiwgY2FuV3JpdGU7CiAKICAgICBjYW5Xcml0ZSA9IHFlbXVfY2hyX2JlX2Nhbl93cml0ZShj aHIpOwogICAgIGxlbiA9IGNhbldyaXRlOwpkaWZmIC0tZ2l0IGEvaHcvYnQvaGNpLWNzci5jIGIv aHcvYnQvaGNpLWNzci5jCmluZGV4IGZhNjY2MGExMTMuLmU4MzdhM2ZhMWYgMTAwNjQ0Ci0tLSBh L2h3L2J0L2hjaS1jc3IuYworKysgYi9ody9idC9oY2ktY3NyLmMKQEAgLTM4LDcgKzM4LDcgQEAg c3RydWN0IGNzcmhjaV9zIHsKICNkZWZpbmUgRklGT19MRU4JNDA5NgogICAgIGludCBvdXRfc3Rh cnQ7CiAgICAgaW50IG91dF9sZW47Ci0gICAgaW50IG91dF9zaXplOworICAgIHNpemVfdCBvdXRf c2l6ZTsKICAgICB1aW50OF90IG91dGZpZm9bRklGT19MRU4gKiAyXTsKICAgICB1aW50OF90IGlu cGt0W0ZJRk9fTEVOXTsKICAgICBlbnVtIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2hhcmRldi9j aGFyLWZkLmggYi9pbmNsdWRlL2NoYXJkZXYvY2hhci1mZC5oCmluZGV4IGU3YzJiMTc2ZjkuLjM2 YzZiODljZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY2hhcmRldi9jaGFyLWZkLmgKKysrIGIvaW5j bHVkZS9jaGFyZGV2L2NoYXItZmQuaApAQCAtMzEsNyArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBG RENoYXJkZXYgewogICAgIENoYXJkZXYgcGFyZW50OwogCiAgICAgUUlPQ2hhbm5lbCAqaW9jX2lu LCAqaW9jX291dDsKLSAgICBpbnQgbWF4X3NpemU7CisgICAgc2l6ZV90IG1heF9zaXplOwogfSBG RENoYXJkZXY7CiAKICNkZWZpbmUgVFlQRV9DSEFSREVWX0ZEICJjaGFyZGV2LWZkIgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9jaGFyZGV2L2NoYXIuaCBiL2luY2x1ZGUvY2hhcmRldi9jaGFyLmgKaW5k ZXggYzBiNTdmNzY4NS4uMDM0MWRkMWJhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jaGFyZGV2L2No YXIuaAorKysgYi9pbmNsdWRlL2NoYXJkZXYvY2hhci5oCkBAIC0xNzMsNyArMTczLDcgQEAgQ2hh cmRldiAqcWVtdV9jaHJfbmV3X25vcmVwbGF5KGNvbnN0IGNoYXIgKmxhYmVsLCBjb25zdCBjaGFy ICpmaWxlbmFtZSwKICAqCiAgKiBSZXR1cm5zOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoZSBmcm9u dCBlbmQgY2FuIHJlY2VpdmUgdmlhIEBxZW11X2Nocl9iZV93cml0ZQogICovCi1pbnQgcWVtdV9j aHJfYmVfY2FuX3dyaXRlKENoYXJkZXYgKnMpOworc2l6ZV90IHFlbXVfY2hyX2JlX2Nhbl93cml0 ZShDaGFyZGV2ICpzKTsKIAogLyoqCiAgKiBxZW11X2Nocl9iZV93cml0ZToKZGlmZiAtLWdpdCBh L3VpL2NvbnNvbGUuYyBiL3VpL2NvbnNvbGUuYwppbmRleCA2ZDIyODJkM2U5Li40MmYwNGUyYjM3 IDEwMDY0NAotLS0gYS91aS9jb25zb2xlLmMKKysrIGIvdWkvY29uc29sZS5jCkBAIC02MSw4ICs2 MSw4IEBAIGVudW0gVFRZU3RhdGUgewogCiB0eXBlZGVmIHN0cnVjdCBRRU1VRklGTyB7CiAgICAg dWludDhfdCAqYnVmOwotICAgIGludCBidWZfc2l6ZTsKLSAgICBpbnQgY291bnQsIHdwdHIsIHJw dHI7CisgICAgc2l6ZV90IGJ1Zl9zaXplLCBjb3VudDsKKyAgICBpbnQgd3B0ciwgcnB0cjsKIH0g UUVNVUZJRk87CiAKIHN0YXRpYyBpbnQgcWVtdV9maWZvX3dyaXRlKFFFTVVGSUZPICpmLCBjb25z dCB1aW50OF90ICpidWYsIGludCBsZW4xKQpAQCAtMTExMCw3ICsxMTEwLDcgQEAgc3RhdGljIGlu dCB2Y19jaHJfd3JpdGUoQ2hhcmRldiAqY2hyLCBjb25zdCB1aW50OF90ICpidWYsIGludCBsZW4p CiBzdGF0aWMgdm9pZCBrYmRfc2VuZF9jaGFycyh2b2lkICpvcGFxdWUpCiB7CiAgICAgUWVtdUNv bnNvbGUgKnMgPSBvcGFxdWU7Ci0gICAgaW50IGxlbjsKKyAgICBzaXplX3QgbGVuOwogICAgIHVp bnQ4X3QgYnVmWzE2XTsKIAogICAgIGxlbiA9IHFlbXVfY2hyX2JlX2Nhbl93cml0ZShzLT5jaHIp OwotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==