From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FAKE_REPLY_C,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 016BBC43381 for ; Tue, 26 Mar 2019 08:19:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BA7F820830 for ; Tue, 26 Mar 2019 08:19:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="ExewmT0W" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731172AbfCZITF (ORCPT ); Tue, 26 Mar 2019 04:19:05 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:57686 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726042AbfCZITE (ORCPT ); Tue, 26 Mar 2019 04:19:04 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x2Q8Dqpt136689; Tue, 26 Mar 2019 08:18:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : mime-version : content-type : in-reply-to; s=corp-2018-07-02; bh=JtIGH4+9/c6cTyJvObA7CYZ2plDPcL5EYdqH6QgXHaE=; b=ExewmT0WZ5kmaCdZ0hH+wIhr76zl7U9/cQy1fbJtAfxbzAyp+Rk9JexeZ2fTWCIBva3x CbK3cCOD0rzvg5aP+i3BefJbjG+Vn5+2ayIn5fHXYhsO+gvELSzijNoit3H/ktGk2ObO p/+DNmNvve3tnGiSCrxt1VRXA8WyN0iHn62T4bdcgSIRKD2xqqqBlxafZzlSVZ4VRqvB XxTCjAnbdvhtTBaZaLoNM6ukwM4JAZvlTova+CUHgfjjH3m5R8HxK1t19FMq/bY3eFLN Gxx0OsCn81NFd0zM/fLVKsHv2CayU2suEBZrmPJHRUcDh5vPxKnEiFo1L6ACSJdZO2rH Og== Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp2120.oracle.com with ESMTP id 2re6dj8sd9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Mar 2019 08:18:47 +0000 Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id x2Q8IlI5009685 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Mar 2019 08:18:47 GMT Received: from abhmp0003.oracle.com (abhmp0003.oracle.com [141.146.116.9]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id x2Q8IihD010823; Tue, 26 Mar 2019 08:18:44 GMT Received: from kadam (/197.157.0.51) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 26 Mar 2019 01:18:43 -0700 Date: Tue, 26 Mar 2019 11:18:31 +0300 From: Dan Carpenter To: kbuild@01.org, Kangjie Lu Cc: kbuild-all@01.org, kjlu@umn.edu, pakki001@umn.edu, Alan Stern , Greg Kroah-Hartman , linux-usb@vger.kernel.org, usb-storage@lists.one-eyed-alien.net, linux-kernel@vger.kernel.org Subject: Re: [PATCH] usb: sierra: fix a missing check of device_create_file Message-ID: <20190326081831.GF32613@kadam> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190324223920.961-1-kjlu@umn.edu> User-Agent: Mutt/1.9.4 (2018-02-28) X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9206 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903260062 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Kangjie, Thank you for the patch! Perhaps something to improve: url: https://github.com/0day-ci/linux/commits/Kangjie-Lu/usb-sierra-fix-a-missing-check-of-device_create_file/20190325-101328 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing smatch warnings: drivers/usb/storage/sierra_ms.c:199 sierra_ms_init() error: double free of 'swocInfo' # https://github.com/0day-ci/linux/commit/04d66f3d072c3d14308aebecdbc0f2983ce443d2 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 04d66f3d072c3d14308aebecdbc0f2983ce443d2 vim +/swocInfo +199 drivers/usb/storage/sierra_ms.c 32fe5e393 Kevin Lloyd 2008-07-10 126 32fe5e393 Kevin Lloyd 2008-07-10 127 int sierra_ms_init(struct us_data *us) 32fe5e393 Kevin Lloyd 2008-07-10 128 { 32fe5e393 Kevin Lloyd 2008-07-10 129 int result, retries; 32fe5e393 Kevin Lloyd 2008-07-10 130 struct swoc_info *swocInfo; 32fe5e393 Kevin Lloyd 2008-07-10 131 struct usb_device *udev; 32fe5e393 Kevin Lloyd 2008-07-10 132 struct Scsi_Host *sh; 32fe5e393 Kevin Lloyd 2008-07-10 133 32fe5e393 Kevin Lloyd 2008-07-10 134 retries = 3; 32fe5e393 Kevin Lloyd 2008-07-10 135 result = 0; 32fe5e393 Kevin Lloyd 2008-07-10 136 udev = us->pusb_dev; 32fe5e393 Kevin Lloyd 2008-07-10 137 32fe5e393 Kevin Lloyd 2008-07-10 138 sh = us_to_host(us); 0220a3f01 Alan Cox 2012-09-19 139 scsi_get_host_dev(sh); 32fe5e393 Kevin Lloyd 2008-07-10 140 32fe5e393 Kevin Lloyd 2008-07-10 141 /* Force Modem mode */ 32fe5e393 Kevin Lloyd 2008-07-10 142 if (swi_tru_install == TRU_FORCE_MODEM) { 191648d03 Joe Perches 2013-04-19 143 usb_stor_dbg(us, "SWIMS: Forcing Modem Mode\n"); 32fe5e393 Kevin Lloyd 2008-07-10 144 result = sierra_set_ms_mode(udev, SWIMS_SET_MODE_Modem); 32fe5e393 Kevin Lloyd 2008-07-10 145 if (result < 0) 191648d03 Joe Perches 2013-04-19 146 usb_stor_dbg(us, "SWIMS: Failed to switch to modem mode\n"); 32fe5e393 Kevin Lloyd 2008-07-10 147 return -EIO; 32fe5e393 Kevin Lloyd 2008-07-10 148 } 32fe5e393 Kevin Lloyd 2008-07-10 149 /* Force Mass Storage mode (keep CD-Rom) */ 32fe5e393 Kevin Lloyd 2008-07-10 150 else if (swi_tru_install == TRU_FORCE_MS) { 191648d03 Joe Perches 2013-04-19 151 usb_stor_dbg(us, "SWIMS: Forcing Mass Storage Mode\n"); 32fe5e393 Kevin Lloyd 2008-07-10 152 goto complete; 32fe5e393 Kevin Lloyd 2008-07-10 153 } 32fe5e393 Kevin Lloyd 2008-07-10 154 /* Normal TRU-Install Logic */ 32fe5e393 Kevin Lloyd 2008-07-10 155 else { 191648d03 Joe Perches 2013-04-19 156 usb_stor_dbg(us, "SWIMS: Normal SWoC Logic\n"); 32fe5e393 Kevin Lloyd 2008-07-10 157 32fe5e393 Kevin Lloyd 2008-07-10 158 swocInfo = kmalloc(sizeof(struct swoc_info), 32fe5e393 Kevin Lloyd 2008-07-10 159 GFP_KERNEL); 191648d03 Joe Perches 2013-04-19 160 if (!swocInfo) 32fe5e393 Kevin Lloyd 2008-07-10 161 return -ENOMEM; 32fe5e393 Kevin Lloyd 2008-07-10 162 32fe5e393 Kevin Lloyd 2008-07-10 163 retries = 3; 32fe5e393 Kevin Lloyd 2008-07-10 164 do { 32fe5e393 Kevin Lloyd 2008-07-10 165 retries--; 32fe5e393 Kevin Lloyd 2008-07-10 166 result = sierra_get_swoc_info(udev, swocInfo); 32fe5e393 Kevin Lloyd 2008-07-10 167 if (result < 0) { 191648d03 Joe Perches 2013-04-19 168 usb_stor_dbg(us, "SWIMS: Failed SWoC query\n"); 32fe5e393 Kevin Lloyd 2008-07-10 169 schedule_timeout_uninterruptible(2*HZ); 32fe5e393 Kevin Lloyd 2008-07-10 170 } 32fe5e393 Kevin Lloyd 2008-07-10 171 } while (retries && result < 0); 32fe5e393 Kevin Lloyd 2008-07-10 172 32fe5e393 Kevin Lloyd 2008-07-10 173 if (result < 0) { 191648d03 Joe Perches 2013-04-19 174 usb_stor_dbg(us, "SWIMS: Completely failed SWoC query\n"); 32fe5e393 Kevin Lloyd 2008-07-10 175 kfree(swocInfo); 32fe5e393 Kevin Lloyd 2008-07-10 176 return -EIO; 32fe5e393 Kevin Lloyd 2008-07-10 177 } 32fe5e393 Kevin Lloyd 2008-07-10 178 191648d03 Joe Perches 2013-04-19 179 debug_swoc(&us->pusb_dev->dev, swocInfo); 32fe5e393 Kevin Lloyd 2008-07-10 180 f0183a338 Felipe Balbi 2016-04-18 181 /* f0183a338 Felipe Balbi 2016-04-18 182 * If there is not Linux software on the TRU-Install device 32fe5e393 Kevin Lloyd 2008-07-10 183 * then switch to modem mode 32fe5e393 Kevin Lloyd 2008-07-10 184 */ 32fe5e393 Kevin Lloyd 2008-07-10 185 if (!containsFullLinuxPackage(swocInfo)) { 191648d03 Joe Perches 2013-04-19 186 usb_stor_dbg(us, "SWIMS: Switching to Modem Mode\n"); 32fe5e393 Kevin Lloyd 2008-07-10 187 result = sierra_set_ms_mode(udev, 32fe5e393 Kevin Lloyd 2008-07-10 188 SWIMS_SET_MODE_Modem); 32fe5e393 Kevin Lloyd 2008-07-10 189 if (result < 0) 191648d03 Joe Perches 2013-04-19 190 usb_stor_dbg(us, "SWIMS: Failed to switch modem\n"); 32fe5e393 Kevin Lloyd 2008-07-10 191 kfree(swocInfo); 32fe5e393 Kevin Lloyd 2008-07-10 192 return -EIO; 32fe5e393 Kevin Lloyd 2008-07-10 193 } 32fe5e393 Kevin Lloyd 2008-07-10 194 kfree(swocInfo); ^^^^^^^^^^^^^^^^ 32fe5e393 Kevin Lloyd 2008-07-10 195 } break statement? 32fe5e393 Kevin Lloyd 2008-07-10 196 complete: 32fe5e393 Kevin Lloyd 2008-07-10 197 result = device_create_file(&us->pusb_intf->dev, &dev_attr_truinst); 04d66f3d0 Kangjie Lu 2019-03-24 198 if (result) { 04d66f3d0 Kangjie Lu 2019-03-24 @199 kfree(swocInfo); ^^^^^^^^^^^^^^^ Double free. 04d66f3d0 Kangjie Lu 2019-03-24 200 return result; 04d66f3d0 Kangjie Lu 2019-03-24 201 } 32fe5e393 Kevin Lloyd 2008-07-10 202 be475d902 Alan Stern 2009-05-21 203 return 0; 32fe5e393 Kevin Lloyd 2008-07-10 204 } 32fe5e393 Kevin Lloyd 2008-07-10 205 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: usb: sierra: fix a missing check of device_create_file From: Dan Carpenter Message-Id: <20190326081831.GF32613@kadam> Date: Tue, 26 Mar 2019 11:18:31 +0300 To: kbuild@01.org, Kangjie Lu Cc: kbuild-all@01.org, pakki001@umn.edu, Alan Stern , Greg Kroah-Hartman , linux-usb@vger.kernel.org, usb-storage@lists.one-eyed-alien.net, linux-kernel@vger.kernel.org List-ID: SGkgS2FuZ2ppZSwKClRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoISBQZXJoYXBzIHNvbWV0aGluZyB0 byBpbXByb3ZlOgoKdXJsOiAgICBodHRwczovL2dpdGh1Yi5jb20vMGRheS1jaS9saW51eC9jb21t aXRzL0thbmdqaWUtTHUvdXNiLXNpZXJyYS1maXgtYS1taXNzaW5nLWNoZWNrLW9mLWRldmljZV9j cmVhdGVfZmlsZS8yMDE5MDMyNS0xMDEzMjgKYmFzZTogICBodHRwczovL2dpdC5rZXJuZWwub3Jn L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ncmVna2gvdXNiLmdpdCB1c2ItdGVzdGluZwoKc21h dGNoIHdhcm5pbmdzOgpkcml2ZXJzL3VzYi9zdG9yYWdlL3NpZXJyYV9tcy5jOjE5OSBzaWVycmFf bXNfaW5pdCgpIGVycm9yOiBkb3VibGUgZnJlZSBvZiAnc3dvY0luZm8nCgojIGh0dHBzOi8vZ2l0 aHViLmNvbS8wZGF5LWNpL2xpbnV4L2NvbW1pdC8wNGQ2NmYzZDA3MmMzZDE0MzA4YWViZWNkYmMw ZjI5ODNjZTQ0M2QyCmdpdCByZW1vdGUgYWRkIGxpbnV4LXJldmlldyBodHRwczovL2dpdGh1Yi5j b20vMGRheS1jaS9saW51eApnaXQgcmVtb3RlIHVwZGF0ZSBsaW51eC1yZXZpZXcKZ2l0IGNoZWNr b3V0IDA0ZDY2ZjNkMDcyYzNkMTQzMDhhZWJlY2RiYzBmMjk4M2NlNDQzZDIKdmltICsvc3dvY0lu Zm8gKzE5OSBkcml2ZXJzL3VzYi9zdG9yYWdlL3NpZXJyYV9tcy5jCgozMmZlNWUzOTMgS2V2aW4g TGxveWQgIDIwMDgtMDctMTAgIDEyNiAgCjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0x MCAgMTI3ICBpbnQgc2llcnJhX21zX2luaXQoc3RydWN0IHVzX2RhdGEgKnVzKQozMmZlNWUzOTMg S2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDEyOCAgewozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIw MDgtMDctMTAgIDEyOSAgCWludCByZXN1bHQsIHJldHJpZXM7CjMyZmU1ZTM5MyBLZXZpbiBMbG95 ZCAgMjAwOC0wNy0xMCAgMTMwICAJc3RydWN0IHN3b2NfaW5mbyAqc3dvY0luZm87CjMyZmU1ZTM5 MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTMxICAJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7 CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTMyICAJc3RydWN0IFNjc2lfSG9z dCAqc2g7CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTMzICAKMzJmZTVlMzkz IEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxMzQgIAlyZXRyaWVzID0gMzsKMzJmZTVlMzkzIEtl dmluIExsb3lkICAyMDA4LTA3LTEwICAxMzUgIAlyZXN1bHQgPSAwOwozMmZlNWUzOTMgS2V2aW4g TGxveWQgIDIwMDgtMDctMTAgIDEzNiAgCXVkZXYgPSB1cy0+cHVzYl9kZXY7CjMyZmU1ZTM5MyBL ZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTM3ICAKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4 LTA3LTEwICAxMzggIAlzaCA9IHVzX3RvX2hvc3QodXMpOwowMjIwYTNmMDEgQWxhbiBDb3ggICAg IDIwMTItMDktMTkgIDEzOSAgCXNjc2lfZ2V0X2hvc3RfZGV2KHNoKTsKMzJmZTVlMzkzIEtldmlu IExsb3lkICAyMDA4LTA3LTEwICAxNDAgIAozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIwMDgtMDct MTAgIDE0MSAgCS8qIEZvcmNlIE1vZGVtIG1vZGUgKi8KMzJmZTVlMzkzIEtldmluIExsb3lkICAy MDA4LTA3LTEwICAxNDIgIAlpZiAoc3dpX3RydV9pbnN0YWxsID09IFRSVV9GT1JDRV9NT0RFTSkg ewoxOTE2NDhkMDMgSm9lIFBlcmNoZXMgIDIwMTMtMDQtMTkgIDE0MyAgCQl1c2Jfc3Rvcl9kYmco dXMsICJTV0lNUzogRm9yY2luZyBNb2RlbSBNb2RlXG4iKTsKMzJmZTVlMzkzIEtldmluIExsb3lk ICAyMDA4LTA3LTEwICAxNDQgIAkJcmVzdWx0ID0gc2llcnJhX3NldF9tc19tb2RlKHVkZXYsIFNX SU1TX1NFVF9NT0RFX01vZGVtKTsKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAx NDUgIAkJaWYgKHJlc3VsdCA8IDApCjE5MTY0OGQwMyBKb2UgUGVyY2hlcyAgMjAxMy0wNC0xOSAg MTQ2ICAJCQl1c2Jfc3Rvcl9kYmcodXMsICJTV0lNUzogRmFpbGVkIHRvIHN3aXRjaCB0byBtb2Rl bSBtb2RlXG4iKTsKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxNDcgIAkJcmV0 dXJuIC1FSU87CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTQ4ICAJfQozMmZl NWUzOTMgS2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDE0OSAgCS8qIEZvcmNlIE1hc3MgU3RvcmFn ZSBtb2RlIChrZWVwIENELVJvbSkgKi8KMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEw ICAxNTAgIAllbHNlIGlmIChzd2lfdHJ1X2luc3RhbGwgPT0gVFJVX0ZPUkNFX01TKSB7CjE5MTY0 OGQwMyBKb2UgUGVyY2hlcyAgMjAxMy0wNC0xOSAgMTUxICAJCXVzYl9zdG9yX2RiZyh1cywgIlNX SU1TOiBGb3JjaW5nIE1hc3MgU3RvcmFnZSBNb2RlXG4iKTsKMzJmZTVlMzkzIEtldmluIExsb3lk ICAyMDA4LTA3LTEwICAxNTIgIAkJZ290byBjb21wbGV0ZTsKMzJmZTVlMzkzIEtldmluIExsb3lk ICAyMDA4LTA3LTEwICAxNTMgIAl9CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAg MTU0ICAJLyogTm9ybWFsIFRSVS1JbnN0YWxsIExvZ2ljICovCjMyZmU1ZTM5MyBLZXZpbiBMbG95 ZCAgMjAwOC0wNy0xMCAgMTU1ICAJZWxzZSB7CjE5MTY0OGQwMyBKb2UgUGVyY2hlcyAgMjAxMy0w NC0xOSAgMTU2ICAJCXVzYl9zdG9yX2RiZyh1cywgIlNXSU1TOiBOb3JtYWwgU1dvQyBMb2dpY1xu Iik7CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTU3ICAKMzJmZTVlMzkzIEtl dmluIExsb3lkICAyMDA4LTA3LTEwICAxNTggIAkJc3dvY0luZm8gPSBrbWFsbG9jKHNpemVvZihz dHJ1Y3Qgc3dvY19pbmZvKSwKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxNTkg IAkJCQlHRlBfS0VSTkVMKTsKMTkxNjQ4ZDAzIEpvZSBQZXJjaGVzICAyMDEzLTA0LTE5ICAxNjAg IAkJaWYgKCFzd29jSW5mbykKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxNjEg IAkJCXJldHVybiAtRU5PTUVNOwozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDE2 MiAgCjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTYzICAJCXJldHJpZXMgPSAz OwozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDE2NCAgCQlkbyB7CjMyZmU1ZTM5 MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTY1ICAJCQlyZXRyaWVzLS07CjMyZmU1ZTM5MyBL ZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTY2ICAJCQlyZXN1bHQgPSBzaWVycmFfZ2V0X3N3b2Nf aW5mbyh1ZGV2LCBzd29jSW5mbyk7CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAg MTY3ICAJCQlpZiAocmVzdWx0IDwgMCkgewoxOTE2NDhkMDMgSm9lIFBlcmNoZXMgIDIwMTMtMDQt MTkgIDE2OCAgCQkJCXVzYl9zdG9yX2RiZyh1cywgIlNXSU1TOiBGYWlsZWQgU1dvQyBxdWVyeVxu Iik7CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTY5ICAJCQkJc2NoZWR1bGVf dGltZW91dF91bmludGVycnVwdGlibGUoMipIWik7CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAw OC0wNy0xMCAgMTcwICAJCQl9CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTcx ICAJCX0gd2hpbGUgKHJldHJpZXMgJiYgcmVzdWx0IDwgMCk7CjMyZmU1ZTM5MyBLZXZpbiBMbG95 ZCAgMjAwOC0wNy0xMCAgMTcyICAKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAx NzMgIAkJaWYgKHJlc3VsdCA8IDApIHsKMTkxNjQ4ZDAzIEpvZSBQZXJjaGVzICAyMDEzLTA0LTE5 ICAxNzQgIAkJCXVzYl9zdG9yX2RiZyh1cywgIlNXSU1TOiBDb21wbGV0ZWx5IGZhaWxlZCBTV29D IHF1ZXJ5XG4iKTsKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxNzUgIAkJCWtm cmVlKHN3b2NJbmZvKTsKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxNzYgIAkJ CXJldHVybiAtRUlPOwozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDE3NyAgCQl9 CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTc4ICAKMTkxNjQ4ZDAzIEpvZSBQ ZXJjaGVzICAyMDEzLTA0LTE5ICAxNzkgIAkJZGVidWdfc3dvYygmdXMtPnB1c2JfZGV2LT5kZXYs IHN3b2NJbmZvKTsKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxODAgIApmMDE4 M2EzMzggRmVsaXBlIEJhbGJpIDIwMTYtMDQtMTggIDE4MSAgCQkvKgpmMDE4M2EzMzggRmVsaXBl IEJhbGJpIDIwMTYtMDQtMTggIDE4MiAgCQkgKiBJZiB0aGVyZSBpcyBub3QgTGludXggc29mdHdh cmUgb24gdGhlIFRSVS1JbnN0YWxsIGRldmljZQozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIwMDgt MDctMTAgIDE4MyAgCQkgKiB0aGVuIHN3aXRjaCB0byBtb2RlbSBtb2RlCjMyZmU1ZTM5MyBLZXZp biBMbG95ZCAgMjAwOC0wNy0xMCAgMTg0ICAJCSAqLwozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIw MDgtMDctMTAgIDE4NSAgCQlpZiAoIWNvbnRhaW5zRnVsbExpbnV4UGFja2FnZShzd29jSW5mbykp IHsKMTkxNjQ4ZDAzIEpvZSBQZXJjaGVzICAyMDEzLTA0LTE5ICAxODYgIAkJCXVzYl9zdG9yX2Ri Zyh1cywgIlNXSU1TOiBTd2l0Y2hpbmcgdG8gTW9kZW0gTW9kZVxuIik7CjMyZmU1ZTM5MyBLZXZp biBMbG95ZCAgMjAwOC0wNy0xMCAgMTg3ICAJCQlyZXN1bHQgPSBzaWVycmFfc2V0X21zX21vZGUo dWRldiwKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxODggIAkJCQlTV0lNU19T RVRfTU9ERV9Nb2RlbSk7CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTg5ICAJ CQlpZiAocmVzdWx0IDwgMCkKMTkxNjQ4ZDAzIEpvZSBQZXJjaGVzICAyMDEzLTA0LTE5ICAxOTAg IAkJCQl1c2Jfc3Rvcl9kYmcodXMsICJTV0lNUzogRmFpbGVkIHRvIHN3aXRjaCBtb2RlbVxuIik7 CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTkxICAJCQlrZnJlZShzd29jSW5m byk7CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTkyICAJCQlyZXR1cm4gLUVJ TzsKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxOTMgIAkJfQozMmZlNWUzOTMg S2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDE5NCAgCQlrZnJlZShzd29jSW5mbyk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5e Xl5eXl5eXgoKMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAxOTUgIAl9CgpicmVh ayBzdGF0ZW1lbnQ/CgozMmZlNWUzOTMgS2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDE5NiAgY29t cGxldGU6CjMyZmU1ZTM5MyBLZXZpbiBMbG95ZCAgMjAwOC0wNy0xMCAgMTk3ICAJcmVzdWx0ID0g ZGV2aWNlX2NyZWF0ZV9maWxlKCZ1cy0+cHVzYl9pbnRmLT5kZXYsICZkZXZfYXR0cl90cnVpbnN0 KTsKMDRkNjZmM2QwIEthbmdqaWUgTHUgICAyMDE5LTAzLTI0ICAxOTggIAlpZiAocmVzdWx0KSB7 CjA0ZDY2ZjNkMCBLYW5namllIEx1ICAgMjAxOS0wMy0yNCBAMTk5ICAJCWtmcmVlKHN3b2NJbmZv KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeXl5eXl5eXl5eXl5eXl4KRG91YmxlIGZyZWUuCgowNGQ2NmYzZDAgS2FuZ2ppZSBMdSAgIDIw MTktMDMtMjQgIDIwMCAgCQlyZXR1cm4gcmVzdWx0OwowNGQ2NmYzZDAgS2FuZ2ppZSBMdSAgIDIw MTktMDMtMjQgIDIwMSAgCX0KMzJmZTVlMzkzIEtldmluIExsb3lkICAyMDA4LTA3LTEwICAyMDIg IApiZTQ3NWQ5MDIgQWxhbiBTdGVybiAgIDIwMDktMDUtMjEgIDIwMyAgCXJldHVybiAwOwozMmZl NWUzOTMgS2V2aW4gTGxveWQgIDIwMDgtMDctMTAgIDIwNCAgfQozMmZlNWUzOTMgS2V2aW4gTGxv eWQgIDIwMDgtMDctMTAgIDIwNQotLS0KMC1EQVkga2VybmVsIHRlc3QgaW5mcmFzdHJ1Y3R1cmUg ICAgICAgICAgICAgICAgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKaHR0cHM6Ly9saXN0 cy4wMS5vcmcvcGlwZXJtYWlsL2tidWlsZC1hbGwgICAgICAgICAgICAgICAgICAgSW50ZWwgQ29y cG9yYXRpb24K