From patchwork Thu Apr 12 19:32:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 10339191 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E5726600D0 for ; Thu, 12 Apr 2018 19:34:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D290D26B41 for ; Thu, 12 Apr 2018 19:34:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C739A283D1; Thu, 12 Apr 2018 19:34:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 935F6283CF for ; Thu, 12 Apr 2018 19:34:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753032AbeDLTeu (ORCPT ); Thu, 12 Apr 2018 15:34:50 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:48619 "EHLO esa5.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752831AbeDLTer (ORCPT ); Thu, 12 Apr 2018 15:34:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1523561688; x=1555097688; h=from:to:cc:subject:date:message-id:mime-version; bh=v4pNtId56VK0O5Ff206KAvXqdndbRVgEZ06B1Y7QHgk=; b=TxsJcSWGEcK6w+C4jENkj9J9GoL6znD+9YNc7IvZKEe6nGfGw0GvCvfP OXYAZgVYmOWjCK899qHKp0mzKmFpZZfTRyKVPpAW3XXk77TOO5e6IBEXX qEy8UNDcxyAa3pG8s2MPF+6dxMisM9AQSvcUVLuKAm3lYEgeNX2mMtYVI 00/pUNcnO7AWX3jtgVf4B+G0wBRCR4NUDEA61HA/X+tCFMmU2/Oh/Gwh2 rZhsfL3+I5WYJu5OO3V4of1mAHwhty4siBIaNvbGPy0/6fiFNfpgt64R4 z+CA5Dd5W769iopmMdSDNetuiOUSvQwaMsCYqzx/E+HuqohANi2kqqu8c Q==; X-IronPort-AV: E=Sophos;i="5.48,443,1517846400"; d="scan'208";a="75878370" Received: from mail-by2nam03lp0050.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) ([216.32.180.50]) by ob1.hgst.iphmx.com with ESMTP; 13 Apr 2018 03:34:47 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=LVquwDxSBci+pZqbHpbnUM3H9WZxpMfmmvs2Srg98D8=; b=hqxmqedgObRaNJRMrtbhBje6HWUt1QzDGC4ukU4d7eAKAe+uL273dV6zKFyEx0+J0yhAkFAzxC6AK/mLGh/ahhXb5XysR629Q7SpK/ujUmrTFOUummqRxnZ1KBFAlXef3G4AQtn7kJhcVTs5NBGOlvdwom+e2lI0gIm9b4SZzng= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Bart.VanAssche@wdc.com; Received: from localhost.localdomain (50.225.201.71) by MWHPR04MB1198.namprd04.prod.outlook.com (2603:10b6:300:71::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.653.12; Thu, 12 Apr 2018 19:34:42 +0000 From: Bart Van Assche To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: linux-scsi@vger.kernel.org, Bart Van Assche , Hannes Reinecke , Johannes Thumshirn , Jason Gunthorpe , Doug Ledford , Laurence Oberman , stable@vger.kernel.org Subject: [PATCH] scsi_transport_srp: Fix shost to rport translation Date: Thu, 12 Apr 2018 13:32:07 -0600 Message-Id: <20180412193207.13253-1-bart.vanassche@wdc.com> X-Mailer: git-send-email 2.16.2 MIME-Version: 1.0 X-Originating-IP: [50.225.201.71] X-ClientProxiedBy: BN6PR17CA0008.namprd17.prod.outlook.com (2603:10b6:404:65::18) To MWHPR04MB1198.namprd04.prod.outlook.com (2603:10b6:300:71::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB1198; X-Microsoft-Exchange-Diagnostics: 1; MWHPR04MB1198; 3:AQwOhtX/jpMVww0bFx0tYm6Q8TQbumaG6T8m72sbvY5jTyOvFnqm6uFtzMEMuFJTKuo15un9SKHyjcwTmlRWEhq/ZcsaCrR+eSdT+Wz1yyMwn/jZH2nDpUWp4GbMfu/H+dFctAGUEPvO84SN05ex/VVJ7g2/vG2T2hqGtDLCVjgEBqYxwDTIm9ZFR1nBbs/yfZRAV5DAzFF2cBRFRQy/a9u1KrmBM++KC4YGhL2CTtouFDyWFYOtvOEVpbzpO2DH; 25:P1QgSlxQIxaX4VXB5pFPPjHqWswYXaTKBdIMtEAN3wHnd7sLpT/lLFOHpAh+sM+Nr+QuVm8vx3D93UsAtS8/cS09OsjKe+lJTSusQB9uNM8guLn66zGj+jKr8yEc6e/Kn6bViK5NawPWg3BP0/C9ok+RJK/3cqIWdc47I+zrUXUdiBfvRQ8Dkv6yThzjYRw/jKhe8waTicyjuPDv3RrF6MYoCHpYX4ASHqSeRI1FqaGxCmaqlTqL8ETHQq33mzBL6fc2r1D4U0EdT+ezMTdFzirpU8cs7XDXlKCfPmI2jpoXRatYO7wMdZg7NLzFQaHhnrAaLR/aRwDD9YT7Tv3YzA==; 31:sahuJR+zkwLLmNAzexdd5rQqE7oQ2o/9Ohd6MMI1BiBI2RM3mk90ii9uBmgLA9fNUleAZ0jThLWb4w7yHiaC8FTL+EnWwPJjSpRQmuq0e5LmJ91ApomH3a3jfLg13bEvyC08m87UD76LZ3qZJcktrcazUP2V3iixEt6/HpJbG4sdhxKv3FqKlSzjg8O2ags/R1KD+dQ2amwTVNPF8WzKQrZnuRVXx7bQQF4JkFyjaj4= X-MS-TrafficTypeDiagnostic: MWHPR04MB1198: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; MWHPR04MB1198; 20:yRWy67IqbqVSkKfOopdxCPXvTcEpYg4pv13fQsSeR3+76k4EciOqmiIfVpRuUqUp+GUIGXzRy0mdwDiFPEP4qpYDhA2SuAs3kEU1xByKnh+oBnLqywxWjvPIT80RF4WzuUOn1fOXpRQ4bnIUKKAff6siyHBV9UvUAGOs1oS+5E5HJdhf+jz4HfiZam2FtbLnCR4eoL9NVRwJrwEMFccaqNVHpG7MeCn5kjhEIulg0XXNnOOejbTtU7B8JaV/zYmkk6WHR2d7yn0iCpMb55DL4MWJWhJ6/GCW0LAfrd2ElnW9VoOqAg22Om72h9nbx/DMAbOPA2sXGFn6LfVAOvggul1TYwMo8CZBwd7Gxb6/mUEKznxLTYMot+pZth0GT+DIjE7mcv7qyvobmLIAchGJembFYWK6j4hnRM9UTss4xsWYaM0Aa+PTRfxmX29GLDUuB2ZWt9+kN2/dSw7z27zBu0KYX88Q0SiUX3j/GWTtBxT9hSVVj7xrrIs8BZJm0Nzm; 4:Jp2wW5fllXtyrVtGs8nxEPcOqOONJw1veAs1mUc6Ua+tvsXjHz5sz2dzP5Lz4QUHvkYBuU0oWn1Zt5Bf3O36pz2yCG+qQa2sqcULDd007gELKZIGbA85cBDSw0te5xG1vStuHO9h3Pf+zlbjnKnqnhJvYtgl6JKEZxihKiP7Wt58vfi/g01zHXi1oX+JRo7iPpMIm0isJ/8nueiY41dMKvZyD21389FmRqOmsar1WUjPmFtNqRoTanLJpJxPGMTbnRlK0qddPuDtR1J2doLslreL5i9yPgSEcIFoS4mQ2NvmDwhNEHmoPeAnpwqzEO2H X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3231221)(944501327)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MWHPR04MB1198; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB1198; X-Forefront-PRVS: 06400060E1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6069001)(396003)(376002)(39860400002)(346002)(39380400002)(366004)(189003)(51234002)(199004)(66066001)(50466002)(5890100001)(478600001)(59450400001)(48376002)(6506007)(68736007)(486006)(97736004)(305945005)(5660300001)(1857600001)(72206003)(8936002)(106356001)(47776003)(81166006)(7736002)(26005)(6666003)(105586002)(6116002)(54906003)(3846002)(4326008)(16586007)(1076002)(52116002)(53936002)(6512007)(2906002)(316002)(386003)(25786009)(110136005)(186003)(50226002)(81156014)(51416003)(8676002)(16526019)(36756003)(476003)(2616005)(6486002)(956004)(86362001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB1198; H:localhost.localdomain; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR04MB1198; 23:8gAeIkbf9NwDDdkF1+Q6aAjGoD4pyfdZFiPjYi+aZ?= =?us-ascii?Q?pJPm2UhrQlyqZd4WgG+diLwPCW9jX65gQiwYdCb5GIMQ6X40O9m8pqAS83wu?= =?us-ascii?Q?IMngxzFkJKpCEkUfIrxw8qFhiQfZd0hN6UWvVnVPiJaN46K57er/4tcVu6k+?= =?us-ascii?Q?ibGUZzkx5XGyGVbR5uTV3/WDmBveE29fzmMQYJxnnvbL6RJygoa9Xz/4Fbj1?= =?us-ascii?Q?zl6K50RkvemQfaU1J1ynlr2sddLKXniX2vfle3qMuwdWYiOngpvqLbs+TzeO?= =?us-ascii?Q?9pSqOli12MM9DETWdE86nceMsyAU7JS3TUOk7W5KaGdO7xM/11yzz6Bq3L1Z?= =?us-ascii?Q?fO2uPPrKlhKRtk+f9ZnbHV4tlj261yY4j1rrA4gLDb3uw4onDlVsGB3HgB3Z?= =?us-ascii?Q?+586Bf/pd6qyYcxTnGsUuiJFsBuHGWhiEqpi3+H6ylIEuq27kx+Wh1WXufOK?= =?us-ascii?Q?1hv3pBbZZMO5Z+cW91RWZDnnUarZjUHSbWJt4ui53eUxLSrqdntCYvLO0163?= =?us-ascii?Q?bIZM8lKH5KGS+DmqhLVjlYFo8QUflPQ7jEznJ/eNyke/LO+Gx+bFFDlVk593?= =?us-ascii?Q?HO3Uj/n/VsOespya+/LVWWEylQ8y81rIDAnyOrgH0Jt5jXFUHYRHI85LFsTT?= =?us-ascii?Q?0VwygH14MK097ftodSZ8WhwoKKmlKRW67+1oJpi15VErMz8d/xtTE2aQowtP?= =?us-ascii?Q?TL/vLEvPieQbeCIOSwYcnjClaXmturJFJ8UY7jEx4dkT3e8CLawUtIyYeekl?= =?us-ascii?Q?gD7ZKX4hQHi7zpjbKcOk5RNj4QWB/KxlY3yLTu9IO549fPXjk1XvuzidH1Yl?= =?us-ascii?Q?vQGjhTHPm4+zHBG5g9wzPOCYCDlKkyyyyHIHbwHURm3CixpxuorNfClxrhlU?= =?us-ascii?Q?osxy6PlKgtCTgZ/8JTBdqm+b3J3OLXUXuQXWCia1BQEw3Wmk1eIF0Gy1aL3F?= =?us-ascii?Q?1drv6jF7KnJcVopRV6eqQI9ko/4p31KfayFuddPwp3Bsmv2E4qaObdqWFdnU?= =?us-ascii?Q?jBrNr0X0TzWaZAWBINKvk4zlo6CFel8eJooafjEi1gdoKmzxTMupAs8UlXTS?= =?us-ascii?Q?TdcRtD3L+4SUEasnu1nfWMZB9d1vQ4BMiI0o5dmOW/gTrTwxqT1x33sfuVpA?= =?us-ascii?Q?uSvCJZS1AKHG754mwOsA/o24k64LPqgrMrNFx0gVgl2jD3hyzgRMqGBMnIir?= =?us-ascii?Q?Ah4lNcWf1Cb3w0lUYZ5FuK4Jbv2E3GJX7AAIPAE1GD1vnbAFY8HACo+SsKma?= =?us-ascii?Q?XP3PmEFBsr6TsrCqplID0d7Lfq/Lw6jL36ipRsoBj1XteTdQWSn13CyXPkWQ?= =?us-ascii?Q?NbJPxG8DyHryosIoh58t8I=3D?= X-Microsoft-Antispam-Message-Info: BQ/FfMZur1ZmaKHJ6gnIuIHyLr5//FRlKJ5HFowAP0CX/zOrypprTBn04StmvA72CAsAvSjMQ8JR0pHxxCDdU7I/2EIVs/VZVVaGCFY6wtYRzQ1b0/Zm0DZ2jrp6ZPwnDf0zTtNqpF14C6SH4Ivy/m8DHKOF63wrVV2N0XmAkkZnNeVnozlFWWM83D1B3c6pK83ZCDJXzxM8CG/nJ5TT3w== X-Microsoft-Exchange-Diagnostics: 1; MWHPR04MB1198; 6:Q/6IdJZvacuEuMXUrj/ByvvbE2dZ0AbiKPVb9uB3Bt14PkiDH6xdyR6YWyTakC8IZm9TRI6cRdgt9C3gmY3ml8Grwfl/CnQrQnc6NeclkdZkzcrB0dA2AhVkxgxnrBVd1Enj3NaAsS0uDDF2vgWa/EH8PcC1wPDLNtaasbAKbgCZZ6RlWjMhVqjlSUGJ9qjVlslReL2HNH7ZODZ9ro1YTwyMS65Uek0adXVnIiv8WcEJ4TsNou8Bh0Ta/MvcEwsdYnKAIMb8lGVKRhcHHYutI6/ed/Nt9vYfY+2wv3dOOP1bEJ0GvMOzcwzlIyuFUUzYOPVnOjXjz1RuGYk32BjaVLZNCX6hopw2wKc/64Mjf7chR0Lukp+4syrxcmNc4iIQTTi+pkqtF/GCpqfnI8oAUvHYxH3S7fcbarek5C8IWnYoDRRL3svsrVxPvIrtMVBdFUPidW+8z+RaN20TlpD9Qw==; 5:56BukRyjXLQP4fONebnbowhHxQY7DpNm/nHd8FimxTPyHApAECKxETAkND0QtM1GPMdGb76o97SQcXvWCD1Vnxb3LOqUc2tGmU8O8c5t5VylFShYK/5IhG8pvYOCDafSTr/L41GKvCuKESDP22MGv6engeSVyvTDtfpfYcM1ld4=; 24:oKh5Js82U7kH9l9Dz1yh0yqRJJFapedlslpHAT7TWbuYgw7CSdGMLQh9MgKNOA3Br/ISNSY91O8vismd4jNamHg6bydiPQvSny+h13a8qmo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR04MB1198; 7:pcoRSvCr3opcjfas10pjiWWK3GlprSYqosgg9krplgOMRzEuZaw3yiMEqEeb4nZRFdaJ2P/5Oc9cBYES+qT5xtJlB2DdU8R9HGVzQLqL0scBMnGUrIf0xecxUzhWK0U1b2+pFxWTLzDZb4ozRpbfJMFtKqgrmiBSnY+biSawsirktySvOKB2wPNeRP+M7FPC9E/mf/cs0kpLjaBdvTNxccOJoZjiOzhrXlxLSu9l/XTXrgEBPGRCpEZBBtEyFIrN; 20:mitflwgtoNGnKPqvoa7ig37LJ5Nvi/LftyhjoZToOch7DpjMxGgFEeAHtRsR/7H3OPbrE8ScVc7jKaLtX+syQsSqL6Qfuls/iQU4MamQZk0Gmi6Cm4RkxmKnGlO+B0fFh6O9aC31dxxx38/kWZFFNAUduDm8nm1LiQ05PHFZNvk= X-MS-Office365-Filtering-Correlation-Id: 6cb67ad7-340b-4470-453f-08d5a0ac719e X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Apr 2018 19:34:42.8653 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6cb67ad7-340b-4470-453f-08d5a0ac719e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1198 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Since an SRP remote port is attached as a child to shost->shost_gendev and as the only child, the translation from the shost pointer into an rport pointer must happen by looking up the shost child that is an rport. This patch fixes the following KASAN complaint: BUG: KASAN: slab-out-of-bounds in srp_timed_out+0x57/0x110 [scsi_transport_srp] Read of size 4 at addr ffff880035d3fcc0 by task kworker/1:0H/19 CPU: 1 PID: 19 Comm: kworker/1:0H Not tainted 4.16.0-rc3-dbg+ #1 Workqueue: kblockd blk_mq_timeout_work Call Trace: dump_stack+0x85/0xc7 print_address_description+0x65/0x270 kasan_report+0x231/0x350 srp_timed_out+0x57/0x110 [scsi_transport_srp] scsi_times_out+0xc7/0x3f0 [scsi_mod] blk_mq_terminate_expired+0xc2/0x140 bt_iter+0xbc/0xd0 blk_mq_queue_tag_busy_iter+0x1c7/0x350 blk_mq_timeout_work+0x325/0x3f0 process_one_work+0x441/0xa50 worker_thread+0x76/0x6c0 kthread+0x1b2/0x1d0 ret_from_fork+0x24/0x30 Fixes: e68ca75200fe ("scsi_transport_srp: Reduce failover time") Signed-off-by: Bart Van Assche Cc: Hannes Reinecke Cc: Johannes Thumshirn Cc: Jason Gunthorpe Cc: Doug Ledford Cc: Laurence Oberman Cc: stable@vger.kernel.org --- drivers/scsi/scsi_transport_srp.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c index 36f6190931bc..0d0515615847 100644 --- a/drivers/scsi/scsi_transport_srp.c +++ b/drivers/scsi/scsi_transport_srp.c @@ -51,6 +51,8 @@ struct srp_internal { struct transport_container rport_attr_cont; }; +static int scsi_is_srp_rport(const struct device *dev); + #define to_srp_internal(tmpl) container_of(tmpl, struct srp_internal, t) #define dev_to_rport(d) container_of(d, struct srp_rport, dev) @@ -60,9 +62,24 @@ static inline struct Scsi_Host *rport_to_shost(struct srp_rport *r) return dev_to_shost(r->dev.parent); } +static int find_child_rport(struct device *dev, void *data) +{ + struct device **child = data; + + if (scsi_is_srp_rport(dev)) { + WARN_ON_ONCE(*child); + *child = dev; + } + return 0; +} + static inline struct srp_rport *shost_to_rport(struct Scsi_Host *shost) { - return transport_class_to_srp_rport(&shost->shost_gendev); + struct device *child = NULL; + + WARN_ON_ONCE(device_for_each_child(&shost->shost_gendev, &child, + find_child_rport) < 0); + return child ? dev_to_rport(child) : NULL; } /**