aboutsummaryrefslogtreecommitdiff
path: root/qemu-io-cmds.c
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2024-06-12 22:29:50 -0700
committerRichard Henderson <richard.henderson@linaro.org>2024-06-12 22:29:50 -0700
commit36c1febe3f34ae38db375865b7841165d76cdae4 (patch)
treec819f38b5ebc18cef5c4ef304c8fdccbe740e85f /qemu-io-cmds.c
parentf3e8cc47de2bc537d4991e883a85208e4e1c0f98 (diff)
parent3ab0f063e58ed9224237d69c4211ca83335164c4 (diff)
downloadqemu-36c1febe3f34ae38db375865b7841165d76cdae4.zip
qemu-36c1febe3f34ae38db375865b7841165d76cdae4.tar.gz
qemu-36c1febe3f34ae38db375865b7841165d76cdae4.tar.bz2
Merge tag 'for-upstream' of https://repo.or.cz/qemu/kevin into staging
Block layer patches - crypto: Fix crash when used with multiqueue devices - linux-aio: add IO_CMD_FDSYNC command support - copy-before-write: Avoid integer overflows for timeout > 4s - Fix crash with QMP block_resize and iothreads - qemu-io: add cvtnum() error handling for zone commands - Code cleanup # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAmZoitoRHGt3b2xmQHJl # ZGhhdC5jb20ACgkQfwmycsiPL9Z2ng/+KVz0P1M6fjdI0yJSwAla3PVRfB0BjZ+k # pwoUaHholVB4lmhU8OhtUHgEPK/jIZVdgwfG2se8WHR3eAzEVTWqt5mRIjOVUX4b # N29G6gTHt8p64YKSbiqnyK2IC7qhY/o3hQ+d8frk+tqstc2tzFHDtjkWtYROdl/X # iNW6zXy1rz5qIyJ80QWvBs7CfQuvElzK0GN2QusSZDEUJYiLhVS6QfjNmRfJI5yT # /eDoHAjMJycxy+8YpEj1QEdEcFV7dS0BCr6qeWeAg50Gej1xlDeknejG+Cro2A1z # MJu4blqMhzzjG9YIS90wCDOxXYdifa1VQSIpV6zpU1ExToXFOVtF3h06Hu0aHiBu # hU4UnTsQSLmlQXbSbFwlVgRdGfAxvIxp6EuWtPteSAfnxAlxoQbqnV6uN/RsFnsr # R+zSiNx+20IDj4befzcQWNWpWNnTloRR01/iucncEpZZEu0/E58Y4bFAWBexMOhz # MgYTXTVgR+WPuyR8FXyXX32dQBQMb5grSnseXwOBhi3ULrMqjLinR60B+XbWgy/g # mE/oLc+uttAk1EbHH/8od8vjvtDHdl9FrfsPaPDlJTiexqNZHxiDE3WVdhvaPsTF # wJ0CB7pdvrWIAVwmSpfksVoyL2HQx2ILjGSQbKPvYEZqSoUMr7+7Z0SkTQ1i706b # xODS2wm+h0Q= # =hMLb # -----END PGP SIGNATURE----- # gpg: Signature made Tue 11 Jun 2024 10:35:22 AM PDT # gpg: using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6 # gpg: issuer "kwolf@redhat.com" # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full] * tag 'for-upstream' of https://repo.or.cz/qemu/kevin: crypto/block: drop qcrypto_block_open() n_threads argument block/crypto: create ciphers on demand linux-aio: add IO_CMD_FDSYNC command support block/copy-before-write: use uint64_t for timeout in nanoseconds qemu-io: add cvtnum() error handling for zone commands aio: warn about iohandler_ctx special casing Revert "monitor: use aio_co_reschedule_self()" block: drop force_dup parameter of raw_reconfigure_getfd() Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'qemu-io-cmds.c')
-rw-r--r--qemu-io-cmds.c48
1 files changed, 47 insertions, 1 deletions
diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c
index f5d7202..e2fab57 100644
--- a/qemu-io-cmds.c
+++ b/qemu-io-cmds.c
@@ -1739,12 +1739,26 @@ static int zone_report_f(BlockBackend *blk, int argc, char **argv)
{
int ret;
int64_t offset;
+ int64_t val;
unsigned int nr_zones;
++optind;
offset = cvtnum(argv[optind]);
+ if (offset < 0) {
+ print_cvtnum_err(offset, argv[optind]);
+ return offset;
+ }
++optind;
- nr_zones = cvtnum(argv[optind]);
+ val = cvtnum(argv[optind]);
+ if (val < 0) {
+ print_cvtnum_err(val, argv[optind]);
+ return val;
+ }
+ if (val > UINT_MAX) {
+ printf("Number of zones must be less than 2^32\n");
+ return -ERANGE;
+ }
+ nr_zones = val;
g_autofree BlockZoneDescriptor *zones = NULL;
zones = g_new(BlockZoneDescriptor, nr_zones);
@@ -1780,8 +1794,16 @@ static int zone_open_f(BlockBackend *blk, int argc, char **argv)
int64_t offset, len;
++optind;
offset = cvtnum(argv[optind]);
+ if (offset < 0) {
+ print_cvtnum_err(offset, argv[optind]);
+ return offset;
+ }
++optind;
len = cvtnum(argv[optind]);
+ if (len < 0) {
+ print_cvtnum_err(len, argv[optind]);
+ return len;
+ }
ret = blk_zone_mgmt(blk, BLK_ZO_OPEN, offset, len);
if (ret < 0) {
printf("zone open failed: %s\n", strerror(-ret));
@@ -1805,8 +1827,16 @@ static int zone_close_f(BlockBackend *blk, int argc, char **argv)
int64_t offset, len;
++optind;
offset = cvtnum(argv[optind]);
+ if (offset < 0) {
+ print_cvtnum_err(offset, argv[optind]);
+ return offset;
+ }
++optind;
len = cvtnum(argv[optind]);
+ if (len < 0) {
+ print_cvtnum_err(len, argv[optind]);
+ return len;
+ }
ret = blk_zone_mgmt(blk, BLK_ZO_CLOSE, offset, len);
if (ret < 0) {
printf("zone close failed: %s\n", strerror(-ret));
@@ -1830,8 +1860,16 @@ static int zone_finish_f(BlockBackend *blk, int argc, char **argv)
int64_t offset, len;
++optind;
offset = cvtnum(argv[optind]);
+ if (offset < 0) {
+ print_cvtnum_err(offset, argv[optind]);
+ return offset;
+ }
++optind;
len = cvtnum(argv[optind]);
+ if (len < 0) {
+ print_cvtnum_err(len, argv[optind]);
+ return len;
+ }
ret = blk_zone_mgmt(blk, BLK_ZO_FINISH, offset, len);
if (ret < 0) {
printf("zone finish failed: %s\n", strerror(-ret));
@@ -1855,8 +1893,16 @@ static int zone_reset_f(BlockBackend *blk, int argc, char **argv)
int64_t offset, len;
++optind;
offset = cvtnum(argv[optind]);
+ if (offset < 0) {
+ print_cvtnum_err(offset, argv[optind]);
+ return offset;
+ }
++optind;
len = cvtnum(argv[optind]);
+ if (len < 0) {
+ print_cvtnum_err(len, argv[optind]);
+ return len;
+ }
ret = blk_zone_mgmt(blk, BLK_ZO_RESET, offset, len);
if (ret < 0) {
printf("zone reset failed: %s\n", strerror(-ret));