Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/815773/?format=api
{ "id": 815773, "url": "http://patchwork.ozlabs.org/api/patches/815773/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170919182745.90280-5-pasic@linux.vnet.ibm.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20170919182745.90280-5-pasic@linux.vnet.ibm.com>", "list_archive_url": null, "date": "2017-09-19T18:27:44", "name": "[v3,4/5] 390x/css: introduce maximum data address checking", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "6d68d83241595a9162ebfc2eb689a83459f4d2c2", "submitter": { "id": 68297, "url": "http://patchwork.ozlabs.org/api/people/68297/?format=api", "name": "Halil Pasic", "email": "pasic@linux.vnet.ibm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170919182745.90280-5-pasic@linux.vnet.ibm.com/mbox/", "series": [ { "id": 3944, "url": "http://patchwork.ozlabs.org/api/series/3944/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=3944", "date": "2017-09-19T18:27:40", "name": "add CCW indirect data access support", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/3944/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/815773/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/815773/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)", "Received": [ "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xxWf71bTYz9sPk\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 20 Sep 2017 04:30:55 +1000 (AEST)", "from localhost ([::1]:44778 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1duNIL-0005ff-BF\n\tfor incoming@patchwork.ozlabs.org; Tue, 19 Sep 2017 14:30:53 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:53073)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <pasic@linux.vnet.ibm.com>) id 1duNFa-0003p7-Nh\n\tfor qemu-devel@nongnu.org; Tue, 19 Sep 2017 14:28:03 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <pasic@linux.vnet.ibm.com>) id 1duNFW-0002MT-9x\n\tfor qemu-devel@nongnu.org; Tue, 19 Sep 2017 14:28:02 -0400", "from mx0b-001b2d01.pphosted.com ([148.163.158.5]:50216\n\thelo=mx0a-001b2d01.pphosted.com)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <pasic@linux.vnet.ibm.com>)\n\tid 1duNFW-0002LO-57\n\tfor qemu-devel@nongnu.org; Tue, 19 Sep 2017 14:27:58 -0400", "from pps.filterd (m0098416.ppops.net [127.0.0.1])\n\tby mx0b-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv8JIOJDp139066\n\tfor <qemu-devel@nongnu.org>; Tue, 19 Sep 2017 14:27:57 -0400", "from e06smtp11.uk.ibm.com (e06smtp11.uk.ibm.com [195.75.94.107])\n\tby mx0b-001b2d01.pphosted.com with ESMTP id 2d33drv5r0-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <qemu-devel@nongnu.org>; Tue, 19 Sep 2017 14:27:57 -0400", "from localhost\n\tby e06smtp11.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <qemu-devel@nongnu.org> from <pasic@linux.vnet.ibm.com>;\n\tTue, 19 Sep 2017 19:27:55 +0100", "from b06cxnps3074.portsmouth.uk.ibm.com (9.149.109.194)\n\tby e06smtp11.uk.ibm.com (192.168.101.141) with IBM ESMTP SMTP\n\tGateway: Authorized Use Only! Violators will be prosecuted; \n\tTue, 19 Sep 2017 19:27:52 +0100", "from d06av24.portsmouth.uk.ibm.com (d06av24.portsmouth.uk.ibm.com\n\t[9.149.105.60])\n\tby b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with\n\tESMTP id v8JIRq8523527672; Tue, 19 Sep 2017 18:27:52 GMT", "from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 8391942041;\n\tTue, 19 Sep 2017 19:24:04 +0100 (BST)", "from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 556044203F;\n\tTue, 19 Sep 2017 19:24:04 +0100 (BST)", "from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9])\n\tby d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTPS;\n\tTue, 19 Sep 2017 19:24:04 +0100 (BST)" ], "From": "Halil Pasic <pasic@linux.vnet.ibm.com>", "To": "Cornelia Huck <cohuck@redhat.com>", "Date": "Tue, 19 Sep 2017 20:27:44 +0200", "X-Mailer": "git-send-email 2.13.5", "In-Reply-To": "<20170919182745.90280-1-pasic@linux.vnet.ibm.com>", "References": "<20170919182745.90280-1-pasic@linux.vnet.ibm.com>", "X-TM-AS-GCONF": "00", "x-cbid": "17091918-0040-0000-0000-000003FB71C4", "X-IBM-AV-DETECTION": "SAVI=unused REMOTE=unused XFE=unused", "x-cbparentid": "17091918-0041-0000-0000-0000209CA4A2", "Message-Id": "<20170919182745.90280-5-pasic@linux.vnet.ibm.com>", "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-09-19_08:, , signatures=0", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709190256", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy]", "X-Received-From": "148.163.158.5", "Subject": "[Qemu-devel] [PATCH v3 4/5] 390x/css: introduce maximum data\n\taddress checking", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.21", "Precedence": "list", "List-Id": "<qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Cc": "Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>,\n\tHalil Pasic <pasic@linux.vnet.ibm.com>,\n\tPierre Morel <pmorel@linux.vnet.ibm.com>, qemu-devel@nongnu.org", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>" }, "content": "The architecture mandates the addresses to be accessed on the first\nindirection level (that is, the data addresses without IDA, and the\n(M)IDAW addresses with (M)IDA) to be checked against an CCW format\ndependent limit maximum address. If a violation is detected, the storage\naccess is not to be performed and a channel program check needs to be\ngenerated. As of today, we fail to do this check.\n\nLet us stick even closer to the architecture specification.\n\nSigned-off-by: Halil Pasic <pasic@linux.vnet.ibm.com>\n---\n hw/s390x/css.c | 10 ++++++++++\n include/hw/s390x/css.h | 1 +\n 2 files changed, 11 insertions(+)", "diff": "diff --git a/hw/s390x/css.c b/hw/s390x/css.c\nindex 6b0cd8861b..2d37a9ddde 100644\n--- a/hw/s390x/css.c\n+++ b/hw/s390x/css.c\n@@ -795,6 +795,11 @@ static inline int cds_check_len(CcwDataStream *cds, int len)\n return cds->flags & CDS_F_STREAM_BROKEN ? -EINVAL : len;\n }\n \n+static inline bool cds_ccw_addrs_ok(hwaddr addr, int len, bool ccw_fmt1)\n+{\n+ return (addr + len) < (ccw_fmt1 ? (1UL << 31) : (1UL << 24));\n+}\n+\n static int ccw_dstream_rw_noflags(CcwDataStream *cds, void *buff, int len,\n CcwDataStreamOp op)\n {\n@@ -804,6 +809,9 @@ static int ccw_dstream_rw_noflags(CcwDataStream *cds, void *buff, int len,\n if (ret <= 0) {\n return ret;\n }\n+ if (!cds_ccw_addrs_ok(cds->cda, len, cds->flags & CDS_F_FMT)) {\n+ return -EINVAL; /* channel program check */\n+ }\n if (op == CDS_OP_A) {\n goto incr;\n }\n@@ -828,7 +836,9 @@ void ccw_dstream_init(CcwDataStream *cds, CCW1 const *ccw, ORB const *orb)\n g_assert(!(orb->ctrl1 & ORB_CTRL1_MASK_MIDAW));\n cds->flags = (orb->ctrl0 & ORB_CTRL0_MASK_I2K ? CDS_F_I2K : 0) |\n (orb->ctrl0 & ORB_CTRL0_MASK_C64 ? CDS_F_C64 : 0) |\n+ (orb->ctrl0 & ORB_CTRL0_MASK_FMT ? CDS_F_FMT : 0) |\n (ccw->flags & CCW_FLAG_IDA ? CDS_F_IDA : 0);\n+\n cds->count = ccw->count;\n cds->cda_orig = ccw->cda;\n ccw_dstream_rewind(cds);\ndiff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h\nindex 078356e94c..69b374730e 100644\n--- a/include/hw/s390x/css.h\n+++ b/include/hw/s390x/css.h\n@@ -87,6 +87,7 @@ typedef struct CcwDataStream {\n #define CDS_F_MIDA 0x02\n #define CDS_F_I2K 0x04\n #define CDS_F_C64 0x08\n+#define CDS_F_FMT 0x10 /* CCW format-1 */\n #define CDS_F_STREAM_BROKEN 0x80\n uint8_t flags;\n uint8_t at_idaw;\n", "prefixes": [ "v3", "4/5" ] }