From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58236) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNmUp-0007ws-3g for qemu-devel@nongnu.org; Wed, 12 Mar 2014 12:59:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNmUh-0005cD-4g for qemu-devel@nongnu.org; Wed, 12 Mar 2014 12:59:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:30376) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNmUg-0005bs-Rf for qemu-devel@nongnu.org; Wed, 12 Mar 2014 12:59:03 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2CGx2j6012433 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 12 Mar 2014 12:59:02 -0400 From: Markus Armbruster Date: Wed, 12 Mar 2014 17:58:59 +0100 Message-Id: <1394643539-26913-2-git-send-email-armbru@redhat.com> In-Reply-To: <1394643539-26913-1-git-send-email-armbru@redhat.com> References: <1394643539-26913-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH 7.0 qemu-kvm 1/1] QMP: Relax __com.redhat_drive_add parameter checking List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefanha@redhat.com Many new features are unavailable with this command, because its parameter checking is overly restrictive. Relax it. The command was forward-ported from RHEL-6 (commit 75ad257). It provides access to drive_init() via QMP with the parameters restricted to a subset of the ones recognized by drive_init(). We did that because some parameters make sense only when configuring a frontend in addition to a backend, and the command doesn't do that. The parameter filtering is implemented as a whitelist. The forward-port neglected to update the whitelist for all the stuff that has changed since RHEL-6. Due to new features like driver-specific parameters, a whitelist is no longer convenient. Replace by a blacklist that contains exactly the drive_init() parameters that are already filtered out on RHEL-6. Signed-off-by: Markus Armbruster --- device-hotplug.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/device-hotplug.c b/device-hotplug.c index 20f6b7f..78a18f2 100644 --- a/device-hotplug.c +++ b/device-hotplug.c @@ -80,13 +80,8 @@ err: static void check_parm(const char *key, QObject *obj, void *opaque) { - static const char *valid_keys[] = { - "id", "cyls", "heads", "secs", "trans", "media", "snapshot", - "file", "cache", "aio", "format", "serial", "rerror", "werror", - "readonly", "copy-on-read", -#ifdef CONFIG_BLOCK_IO_THROTTLING - "bps", "bps_rd", "bps_wr", "iops", "iops_rd", "iops_wr", -#endif + static const char *unwanted_keys[] = { + "bus", "unit", "index", "if", "boot", "addr", NULL }; @@ -97,14 +92,14 @@ static void check_parm(const char *key, QObject *obj, void *opaque) return; } - for (p = valid_keys; *p; p++) { + for (p = unwanted_keys; *p; p++) { if (!strcmp(key, *p)) { + qerror_report(QERR_INVALID_PARAMETER, key); + *stopped = 1; return; } } - qerror_report(QERR_INVALID_PARAMETER, key); - *stopped = 1; } int simple_drive_add(Monitor *mon, const QDict *qdict, QObject **ret_data) -- 1.8.1.4