diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2024-12-02 12:31:39 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2024-12-02 12:31:39 +0000 |
| commit | 412df552860f196f0dd51f5cd621ce721705caa5 (patch) | |
| tree | b7ba9041f83f03d90e2a740afa7212fe8237f073 | |
| parent | 72b88908d12ee9347d13539c7dd9a252625158d1 (diff) | |
| parent | e6214fd6d48e704ed3aed6ea2053a9756d0ca13f (diff) | |
| download | focaccia-qemu-412df552860f196f0dd51f5cd621ce721705caa5.tar.gz focaccia-qemu-412df552860f196f0dd51f5cd621ce721705caa5.zip | |
Merge tag 'chr-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging
chardev patch queue # -----BEGIN PGP SIGNATURE----- # # iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmdNp4EcHG1hcmNhbmRy # ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5WsaD/92DwK0nKM7HqbqQOHN # lR715V8ve16+mWYZnWA4jQvclFUigg0Xbxl6d6adsK5QnW2nDGgjf3cXsCngUx7K # jNCmynQrpmUx7a7BRgXylEl5zN/HLeVvk2Qb4Jg8EAkRK0utK1Aerlx6CV2fzbR/ # zDslP+C7ELk9evNwWx6PZRgeOii0sL7lto67J4a5Iri2IU4yi9zI/irEIxeE4cDT # P3KFXYsgbm86VC6HaOBWw5+d5JyPr2hVHxvKMpI4YNyU/f2RHdhfqgsLS1gms2Yz # JBuh8DpIq0E+rdQp4ofH5SBPuOFxg7SgDFAyqgHerDd4uAwUafyOfAEVy2hpZmNT # 3JlavSMb2SFhWboMUu9B+gRHC+sc7YCoPZEhaIaciW3XaC/S1JJi/fvB8gcugBDs # lgTUIDEsXLMcgXaFNKbRXpuLG5eXRnzaQ4Y9Gr/3yEvY8eSZ6+x3EDwSMGfg/Ta1 # OW+h09AvWfJR5eZ13x+5CCMFRs8RgQN/D+mxYt3cZ/SdNSBci/4By54IGEgGCCM8 # xoTAqcd2kbpHg2S/MTx7O7OPNC38TbUaOWDR6u0qO0ZXqZA6OdlC+g/Z1uu7ZMqA # FkOTQZuDDgOOhpsmLy4v3nKmFBQNJAPVyfph88DE1QyrU5nVCS55lyTy/ZH2hayL # RCVbI20jrgEJoi44EFdFu6QP/Q== # =0vex # -----END PGP SIGNATURE----- # gpg: Signature made Mon 02 Dec 2024 12:26:41 GMT # gpg: using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5 # gpg: issuer "marcandre.lureau@redhat.com" # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full] # gpg: aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full] # Primary key fingerprint: 87A9 BD93 3F87 C606 D276 F62D DAE8 E109 7596 9CE5 * tag 'chr-pull-request' of https://gitlab.com/marcandre.lureau/qemu: chardev/char-mux: make boolean bit check instead of find_next_bit() chardev/char-mux: shift unsigned long to avoid 32-bit overflow Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
| -rw-r--r-- | chardev/char-mux.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/chardev/char-mux.c b/chardev/char-mux.c index bda5c45e60..e13042d381 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -316,6 +316,8 @@ bool mux_chr_attach_frontend(MuxChardev *d, CharBackend *b, { unsigned int bit; + QEMU_BUILD_BUG_ON(MAX_MUX > (sizeof(d->mux_bitset) * BITS_PER_BYTE)); + bit = find_next_zero_bit(&d->mux_bitset, MAX_MUX, 0); if (bit >= MAX_MUX) { error_setg(errp, @@ -325,7 +327,7 @@ bool mux_chr_attach_frontend(MuxChardev *d, CharBackend *b, return false; } - d->mux_bitset |= (1 << bit); + d->mux_bitset |= (1ul << bit); d->backends[bit] = b; *tag = bit; @@ -334,15 +336,12 @@ bool mux_chr_attach_frontend(MuxChardev *d, CharBackend *b, bool mux_chr_detach_frontend(MuxChardev *d, unsigned int tag) { - unsigned int bit; - - bit = find_next_bit(&d->mux_bitset, MAX_MUX, tag); - if (bit != tag) { + if (!(d->mux_bitset & (1ul << tag))) { return false; } - d->mux_bitset &= ~(1 << bit); - d->backends[bit] = NULL; + d->mux_bitset &= ~(1ul << tag); + d->backends[tag] = NULL; return true; } @@ -351,7 +350,7 @@ void mux_set_focus(Chardev *chr, unsigned int focus) { MuxChardev *d = MUX_CHARDEV(chr); - assert(find_next_bit(&d->mux_bitset, MAX_MUX, focus) == focus); + assert(d->mux_bitset & (1ul << focus)); if (d->focus != -1) { mux_chr_send_event(d, d->focus, CHR_EVENT_MUX_OUT); |