From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751735AbdB0QPY (ORCPT ); Mon, 27 Feb 2017 11:15:24 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:19847 "EHLO esa2.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751251AbdB0QPV (ORCPT ); Mon, 27 Feb 2017 11:15:21 -0500 X-IronPort-AV: E=Sophos;i="5.35,215,1483977600"; d="scan'208";a="92971092" Authentication-Results: spf=pass (sender IP is 74.221.232.54) smtp.mailfrom=sandisk.com; digidescorp.com; dkim=none (message not signed) header.d=none;digidescorp.com; dmarc=bestguesspass action=none header.from=sandisk.com; X-AuditID: ac1c2133-99bff7000000c960-02-58b45039c626 From: Bart Van Assche To: "jejb@linux.vnet.ibm.com" , "steve.magnani@digidescorp.com" , "martin.petersen@oracle.com" CC: "linux-scsi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "steve@digidescorp.com" Subject: Re: [PATCH] sd: close hole in > 2T device rejection when !CONFIG_LBDAF Thread-Topic: [PATCH] sd: close hole in > 2T device rejection when !CONFIG_LBDAF Thread-Index: AQHSkRR38iH6t2M6fkyUMt8Kq+lj/g== Date: Mon, 27 Feb 2017 16:13:43 +0000 Message-ID: <1488211985.2656.1.camel@sandisk.com> References: <1488208949-3811-1-git-send-email-steve@digidescorp.com> In-Reply-To: <1488208949-3811-1-git-send-email-steve@digidescorp.com> Accept-Language: nl-NL, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.28.1.254] Content-Type: text/plain; charset="iso-8859-1" Content-ID: <1CFD8157B51C814AB287333C6AB2713A@sandisk.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrAIsWRmVeSWpSXmKPExsWyRobxn65NwJYIg9Y7UharJuZZXN41h82i +/oONovlx/8xWZzYmGXx49wDdgc2j20HVzN7PDi0mcXj49NbLB6fN8kFsERx2aSk5mSWpRbp 2yVwZcx8fpi9YI5Axeutj9gaGM/zdDFyckgImEjMf9LP2sXIxSEksIRJYlHXJyjnGKPE7VV/ WUCq2ASMJGZP2MMCkhAR2M4o8aXvPjuIwyywkVGi+9Qzxi5GDg5hgUCJKz8FQRpEBIIkbu9v ZoGw9SRWLGxjB7FZBFQlTj48wAZi8woYShxqXQRmCwm4SKx408sOMoZTwFXi/CRlEJNRQFai 5TU3SAWzgLjErSfzmSCOFpBYsuc8M4QtKvHy8T9WCFtB4vOKf2wQ9XoSN6ZOgbKtJC5+WsgI YWtLLFv4mhniAkGJkzOfsExgFJuFZMUsJO2zkLTPQtI+C0n7AkbWVYxixYnJxbnpqQWGJnrF iXkpmcXZesn5uZsYwfGoaLyD8d8G90OMAhyMSjy8FsZbIoRYE8uKK3MPMUpwMCuJ8Lp5A4V4 UxIrq1KL8uOLSnNSiw8xSnOwKInzxsyeGiEkkJ5YkpqdmlqQWgSTZeLglGpg1H7u9//389z7 72qCNfm3P5R73HfnQLn5g4vGl21nLOCX47GI323qWmNkc2z2pc9L/zBdU5VdIfEt4jfLlq2h 38+y9ixZs/e3m9I3ExnJydOv7jZLuZSu3jFn1ZpWSfZjmtk+j5ZKFi52FzGI2K2z+k11YZNS TcQ1Nb4XJVN4Zkw//v5NndBbNiWW4oxEQy3mouJEANfQctfDAgAA X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:74.221.232.54;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(7916002)(39450400003)(39840400002)(39410400002)(39850400002)(39860400002)(2980300002)(438002)(24454002)(377424004)(189002)(199003)(2201001)(106466001)(2900100001)(92566002)(86362001)(106116001)(3846002)(6116002)(76176999)(54356999)(50986999)(102836003)(97736004)(189998001)(53936002)(2270400002)(47776003)(36756003)(229853002)(69596002)(2906002)(4326007)(626004)(33646002)(23756003)(50466002)(6246003)(38730400002)(68736007)(103116003)(2501003)(5250100002)(5660300001)(54906002)(305945005)(7736002)(8746002)(8936002)(2950100002)(356003)(81156014)(8676002)(81166006)(7099028);DIR:OUT;SFP:1102;SCL:1;SRVR:CO2PR04MB827;H:sacsmgep14.sandisk.com;FPR:;SPF:Pass;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1NAM04FT034;1:5br8ORZG7M7iCwV9RbHA/6zsqIkQrWpglbP8JysHVu3Wtpjz8wmPLB1g2JKzV7VNmhv8utYvyuYjesLYd/neaa88LRQ2ORTCPdF4/CkEtFig5h2+uZyFUesVt0Svgx6h3yQH3YDyBtjTGGzJi4Sgjouay2AKkxkR3OGcio131tfzYfyTwuJxNFWP+gcr5X4Q0XxaHFqaaSBFUc1sPVKMuCsndnzl3R8VHfMp2X3rZ+9t2tSIuCO+oFPTfJ7pBi50olMohvWgNAGmbvuPLFVb9vPvlnVLVzvsbp3a3QdnVW5TIJ/X6FMKXPfwLzZWz67rUmDO0kmx9wz0rw9DVmvk+UioyCMIhMV0pfXPJ+iqR2oNV2Zsw6crHnBveHUtRe+awOCmV9fXaZ9rGzTGcN0p7enEyDlnNixpkYEewwVneOVtmRsfWK9zJfN3vDgAGqrPppcGJZoJ25lft3/ZS53td3Xf44sv8201F/WxA8lzav74GkVQaa/zn92vIxDI4l0jpF/cCWbBN4gAiglkBrdUpX/u1VJF82sAYbdA82tMzavrvTawMdGf6gtj/cavE4B+ X-MS-Office365-Filtering-Correlation-Id: 48152d65-f5f7-4bf4-1c8c-08d45f2b9d74 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002);SRVR:CO2PR04MB827; X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB827;3:wLuScjP1a5GCm9UkU2Ad6HxgoMDcNiJUYJACAw1sZFsP4gvcPe/7r3IHq0ZckfXk9zXHg/b0uq2ei13LWj5uXRSAiMj6ujHM6UxH2fnxNd/2+E7pdTKH3l0SeLrKH+Gew9EZdzqdmnbWHhK8t/eLiB1UegYw8I2S5tDv0rzr8CeJ7btAS4xZxIJE4+KYgiKeRD7Qt33cI+DsY0x6jLSQFiZyOe9axlPem8he0VXPSgP2SN2ILQf1GTsPCwWtJNO9XDpCbMKCqTyVutgLX37XVYE3XoeFiq/cfcXqBY/I+TicEy3ebcoZCZBXG5kSMvl9pEXbuO24eOeDSNrO3c4uIuOTQN+X6CifrlkiH/5eAJsVuDHoODU1AN4MDdnHkEpwjUyrBJYhOf4jCKQbaZUDZA==;25:bzF8FV22cX0vT08eKLphfpL+qnYEfgfG44r8EUOcCNIDqhQFJLDIYVqszTRLQoTFa/DTUwsmJtv4v+g0Um7ZnkbYp2X8Uslm84F4Db9dhUyKJpn6ecsyumSpzMteUMwPBYzGf3ymRYZ40VYUM9voW6vE7vzexlpO7W9iXNHhs0oc48FsndKpJmTHPevIelLTnAhhKWg1I3dfLOZm3m6AjA/uADA1W9kBmmP9gHsRdIx62MJGGox0t0soAGl27mub2sH7rhpX/K9OfCvpR3zF/vLJsYUzPCX++sfXdAA2E/ozdNo4Ed2iiZzLg8vHy7g+xrlPiybMBSxADmqsXLXbGrNL8rJho9PZ8Nje3dXLFCLJPzQ/i76CmfNHux1JkOHuMkyad2xTfyNw8f3PPzPNNBiAxfwps/VPp+avCqGdoJaHslFNW9fsHc3bdohWw2CadVxTC9PDJvrRDPRKebg7Vw== X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB827;31:+e0ZGXsppMKI2ewf9JJSQWk8nv67PQdraSAuerqayhhrAEv2JZZHQpq5sJ02vIf+oEOp2Jr6fYKapQ7kbhByxg5C2SVf1Ciibqsny3NgJUZtJUYbvLbLaBO68g0CdlLiY08RYnsRUD0l6v3b88ZLrCGSvSdGRfWvg1brv4PKNQiDws5ySgoLtSZ+qKonNYpNKC6D+matjCfSGvHwoDXlYlzOgG7larC9/A2HKtN/RIzGg+jcBUdw4wgcdo22CNy9FhUWEFijThjUbO3JI0fh/M14wTM6wtw5vJF7EorF3tQ=;20:Dv0J1vlVsnXdL3vbN2b11CDpCAmpRHEuwwkiWTYP8OU0oY+YRstIoMUh05S0R7uH9x8T30c/smaG6H/2GhM8ilKkE7tw4ix9vPFDkKtAmhC9YaweMGfA4nWzxLpJZFQqN2ieqNE+siYGsv4XyoZBjs6eNkNqRo4E9h9h5ZBlBzBkIAlxcQwN4PuXDYVmQsdA6dgvPVyq7AKCKWF/td3aCcHl3LavK9JX2ZWXqGBcvOv4FWp07Le9yEu1yVPQz95nW4NxSeuB5nkdYLgds5Qrxq03njaObvU1C/vpa99vr+T5u2AMMolTjIzMLC1b83Bcv9Glerm7JjA7sJY3QR47UQFwAK/DqT6p4xSiDy1HNVjmT108+b9JsqAoa7RR1e+xvrvTCFtBkGjWDriYoxhYYCzekbnc7H2erb73YMfTBmg4K4x1R7Zd6keofdQpkxQ0HCumvQJHBCExW9B417JrsCYlzAv8FMHhnkbFFJ0ex5nJL/m6eKQbxYKZhK9LYt8D X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(13017025)(13015025)(13018025)(13023025)(13024025)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123558025)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6072148);SRVR:CO2PR04MB827;BCL:0;PCL:0;RULEID:;SRVR:CO2PR04MB827; X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB827;4:kyEaXrEPCae0oueygbdp2ENSoKxzl6Z5KWM2vWfMj9EsOO/xRZkqUGzdnuD28CTwBylzPaG2/fdT/zFFlCt71ALGA7GXjFXUXe4wypqj2bzHyFTTD20plea5fnagSYwzvjvsJCWy6MIvQ/DfsmFZc4SlPWO2mEtJ62UmBoIJeod4/rQvoaA/699Lrx+vRYlla2mYSjEwqKBs5e6g+uzaPnoo1/bR09JwjT6G48Ka2P9pE9NnBSoeaPGj659PVc6Su/PwT9R6RGhE1ynyW9+mlNHO2ZHgg6muDb25GiV3tJo3t1zUUdSf7Weg3omR/3XKMKyDr3Bd5eCmF+ZgJXYD138RL8/2eKWdVQMyCBLUHrR2B55eKHHTWPXCy0k2HQaCEc7teCsfNWL/6LXOrf9Ytu2lcEEQeJAzdXnWvhRu7eiyqUB2JoyvIRGLZEAXgYIGP99S3RmHnCdbh/CToHYSOBCBq8uveGEg9HK5Gzk8vKEd41UqF2R9Q71uM/Uh6JPBI5VXyYbt6AaEnoX7lS+0Ski4GsBEkdYKkOTDD1l35GcFp5R6S+be4dEOEpl/gKI3G7RPAe+/KJqLKtTBeEHTsPFjiAG+y9NzcW5U1QA4c4s1MiQpqCynWkj9FWT6HnMby3FSFjU40J+NV0agx/jJZfaHSQW8AEvszXjXyDTvTC23cuqEZ3MsWa2+dDV5+oPnWmp2ljEc6KY+Mpra9nX5kQ== X-Forefront-PRVS: 02318D10FB X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CO2PR04MB827;23:EMpPBYz3ZdbYM7XlCHMIxbXa2kjSv/3CJM0d14nl?= =?iso-8859-1?Q?w1F5EJTjw8pxf8QmeX1jsHK1syOLMiVScMzAtPMZDEkyOwuwiRsxaLsKoI?= =?iso-8859-1?Q?7j8DcRNQxtuS5JSnpbaR0IAOSe4HwZSNwxXQXtQfW7rOM8Vc/N/bIb94JG?= =?iso-8859-1?Q?A7yTuGV82xRNs/iU6lmDBjg2HOOuWVaCvf3+iIcBAg4hHHCQKnOykFiDBk?= =?iso-8859-1?Q?cU5PlT8mNV7AzbllFiDeWxsO5c+jtEEzP9uJskrH5U7sB82xVdAGjUxMCn?= =?iso-8859-1?Q?tboVcluiAUMu17nGPssCzBHsnrF9kyxTysMvm3iB9VP96SQhvrny4q/Rf1?= =?iso-8859-1?Q?Ff+JBhu8fDHXNAFJj9gI7gwXefzqg5Bq/6HyCYIut3Ams+q5zgm/8xQIlN?= =?iso-8859-1?Q?aWTAYVnTnc/0HEyxXx4T24kXwSgN2RHvCiZpOM7x3RSIjY3mdhm9XVUyDt?= =?iso-8859-1?Q?70oj36QECXLdSxX5YI7jYXxIgGy/6c9khjlrfYcq+Ip0lmbFPQbwGFoE7H?= =?iso-8859-1?Q?bBFif8Zpu1f0pJKOY7Ki9U/MJHW8mwINtASFdzoYflrHP82Pw+ApdOcmSN?= =?iso-8859-1?Q?yVs5b3O15Bi+d3lQ58N9LwH0/EZ7KLdbxumDEnNvb0oHSUs2Aq3RcZYvRg?= =?iso-8859-1?Q?zOgoUP0dpDfmfPx3EzcblEAmjKqwvuLgECZk2K3fOcrsLAySSowqM/gJ89?= =?iso-8859-1?Q?tufHtacoESAKYBZJ3/KTmpH4OECYQ57GS6vtGax0PYL4mIgZPYx5sqpmbL?= =?iso-8859-1?Q?YU0C+aB5oYBp2ihk9gV8nxtwoNzEMAXXJP+n/BjoaK/wgZaARPEznLllkU?= =?iso-8859-1?Q?IgEShZT2dLe/ZTaRUcU6n3SBF+WChL0DOVuQ03GiApyDpU7xRi5zWQWOdz?= =?iso-8859-1?Q?+B+K5Bn/LoPzRStSpaU5jLo/InrAy2603IwTkO+sWVcQ79cc5nsg9xpUbq?= =?iso-8859-1?Q?v59PPHFofbqEAPPL1qIH4A6EBy9ZY1bad192JgwbSd6PircfTucR++Q9s2?= =?iso-8859-1?Q?sN/R9wlugcupKIm/A/73rx4HumcUpk//hVcorBRrcnw9WbJN/U55lxZ0NJ?= =?iso-8859-1?Q?fXGjazS4DLsVzCqeCQluI+ia9WLto/a+dgpFF/s+pQ4NI62niF6X8ikels?= =?iso-8859-1?Q?Ul10Dcc88FYV3oceQac1TMj/ov6PPS7oRHNcMbh4OiyWv2ypF70vRjVS+R?= =?iso-8859-1?Q?GVR4b15NzonAGpvuVTbXb+uTbzBgEWgOJzfLL19KyA10mH/0yu8fVyHRQB?= =?iso-8859-1?Q?URYeY+1/1g2J672U6DzvWF58doU+qIYeDsBCjYhldKFG0ofk7rGppRhBJ9?= =?iso-8859-1?Q?K4GC22fuRjYVBdRglF1ZDEIGBp1gBr4Rm836ePmErMZyYIL99+D83S+TC+?= =?iso-8859-1?Q?owgzF35ktce+FRaXL2fBdeVjPPd21vPTgwMlWOpTfzm8e1MWtg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB827;6:Ue0jd9c6Zpfa3JkcnkPdt6v6+btMoAyZOGd+Hj80IuZnNcukgE/bv7ENLSSBr3CplQ9+mNnwojmu9XJWD7wkfc22SpZa/y1OvSQC9as6umF1lssyrUgESL/SrIVq4eCwxQp+dIPb/Mbrq4M32QYzNGHH4oFk4srnPnytYZVY2lYszBe2xrHVzLIb7v1Mq4aM9WzsXIWXlyuBc7R7gCy0mCV5wkhLXPpFIKi/K4vPbM0ShUpKMCwpNg7w1fill6X1yMNCg/m800WgsfViQgI/cvTUDG1Pl7TTDE0xAZIawhcvSKqDwP7QeVPhZ1ovp6r5CN/aVGbvn0J6aBDo5iwanAWXaOmR5nlVAF4Z8vO8+4ti4xdBp7L0uGezfHKfqeRgGktr2umJdUD1j35t7UR8iiBFWnSIDxQgx57zWQ0THuUbE+dNH2yy2YeQraSQb42s;5:9fF4RZp75h6a4JWpAnYkCntt7Xaip0T9pQk2JOvDR/qBQeJ+Qsjv5VFfQvqOFeYEAdXoDkoMIXaPQupMyBCt6eOiLPmBWzK7WjDlA9nG43SXz7Y+d2nBXTxZbXCl011BHNcDrEEPuRDhUyJmlbIlhQ==;24:o+EqJ+T1CWim+LJ/9/g6z6ugxOYdAoYY4WfOYQhcqESr0HVSmBG3PQDF20WKruXsLv9rDeMkgc/q+6FiqpOiTDpxGrWEgRgT4B072OWtRkA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO2PR04MB827;7:0Ev+vmA+GQva+/QPQdVTCEevA/spzSZBZZRAoOI7g4hdLpZBZbP4+/thWMy44QlrYgvbKDDztrCaySWIf/GpVALPfcHzJWCawbXrOQWSqKtdBKYJ8QMxPnAxwH/9NBKObHljCgKHn2HXCe9h1KEjebXKiQAT1kSglXUmtrqGOft2bFa58GYabCJzVBc89H+rYnMvGPndszchBLgVgPqODvjFQN30TdBF4RPEPKLVkeDMm8Xybx6AndFwFOp1wbABd+je1vgXfQRuzSKfmh8IW0b3m+F218cK6Bq73UYHPTJRV7NhrCJP0HnN6ZO9oZeQ+CZZPWQ4sW5M1/rvcq4dHw==;20:VMOahHmHa+pl0BnRi7SalxgtI5K8cpi1ttMAXHTTmKCnYI/ViayotLSJlFjDxNwm38BBxIF9kXuAEpYGOwj1XgOKwsg28CsHAAPYW/SY0dK/u28GWjvUFG8ptOK5VMqmBfxBq+45s5h6QbQ5EMK1jK7N14ebFuE5MVNx/Ro9oQabMPuPY+UZQcJizQ56p5f+MRTvTqsM1Sb3u96+RxOYDGzxDgab/baOQSsuaRcGVRDqtPevvnQxdUAkUMuFM0R/ X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Feb 2017 16:13:49.0478 (UTC) X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=b61c8803-16f3-4c35-9b17-6f65f441df86;Ip=[74.221.232.54];Helo=[sacsmgep14.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR04MB827 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id v1RGFbuT018682 On Mon, 2017-02-27 at 09:22 -0600, Steven J. Magnani wrote: > @@ -2122,7 +2122,10 @@ static int read_capacity_16(struct scsi_ > return -ENODEV; > } > > - if ((sizeof(sdkp->capacity) == 4) && (lba >= 0xffffffffULL)) { > + /* Make sure logical_to_sectors() won't overflow */ > + lba_in_sectors = lba << (ilog2(sector_size) - 9); > + if ((sizeof(sdkp->capacity) == 4) && > + ((lba >= 0xffffffffULL) || (lba_in_sectors >= 0xffffffffULL))) { > sd_printk(KERN_ERR, sdkp, "Too big for this kernel. Use a " > "kernel compiled with support for large block " > "devices.\n"); > @@ -2162,6 +2165,7 @@ static int read_capacity_10(struct scsi_ > int the_result; > int retries = 3, reset_retries = READ_CAPACITY_RETRIES_ON_RESET; > sector_t lba; > + unsigned long long lba_in_sectors; > unsigned sector_size; > > do { > @@ -2208,7 +2212,10 @@ static int read_capacity_10(struct scsi_ > return sector_size; > } > > - if ((sizeof(sdkp->capacity) == 4) && (lba == 0xffffffff)) { > + /* Make sure logical_to_sectors() won't overflow */ > + lba_in_sectors = ((unsigned long long) lba) << (ilog2(sector_size) - 9); > + if ((sizeof(sdkp->capacity) == 4) && > + (lba_in_sectors >= 0xffffffffULL)) { > sd_printk(KERN_ERR, sdkp, "Too big for this kernel. Use a " > "kernel compiled with support for large block " > "devices.\n"); Why are the two checks slightly different? Could the same code be used for both checks? BTW, using the macro below would make the above checks less verbose and easier to read: /*  * Test whether the result of a shift-left operation would be larger than  * what fits in a variable with the type of @a.  */ #define shift_left_overflows(a, b) \ ({ \ typeof(a) _minus_one = -1LL; \ typeof(a) _plus_one = 1; \ bool _a_is_signed = _minus_one < 0; \ int _shift = sizeof(a) * 8 - ((b) + _a_is_signed); \ _shift < 0 || ((a) & ~((_plus_one << _shift) - 1)) != 0;\ }) Bart.