Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp2415421pxb; Tue, 12 Oct 2021 06:14:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy+EOQTbTBgw3FW/ewmOmAvjHqQwPGr0IiRyHLlUz1fN1rhnuu7ou8FhTO7ImxQqiDTGnLf X-Received: by 2002:a63:b204:: with SMTP id x4mr22088776pge.212.1634044456991; Tue, 12 Oct 2021 06:14:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634044456; cv=none; d=google.com; s=arc-20160816; b=IOoWQoE7StN4Zxh9Vy4sMkMxc6uGzxyjj4IgOcrtJ73Ir3M1YmjAXlvkv6WpVCQnL9 gO8XZps3rhaea3GFk9bxvF3R0ihc6N6BtZYfSXzfBj7568dt1pA2pStsCyxSBjwH8cOR JZwEYJypYWuRQr9A9z24Od09amqXLlCH0/dRN35KD75j8UaJ5miVMgdxBV7Xu2+FpCyn neETv1TuuFnN9bojxynGOD6oykHU5gomIpuRFiHjMGj7fk8g+40gQ6HAVHSlUsGyMy2t 9T8rN3sW7zG/qknLRDiD8AsUTC9JhVY7jCOF49YK4/zZJG+gCTv6KbHQ7m1z8oHiwynW Va1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=5cxTyWIADbR4HEl/m2W+g2UIzfjkLTHGaw3zViy7SQk=; b=cOxKDi5V2R9n21IzWYvKkGQMXEPGN5u21lUL71iVFUW9lgVpG+RxP0eYJIY0pTzA3H LIImKNVIQsM/+qziiTEPLpup4DBNZ/sMSOvUp2KfBQtP6h1d0B6sO0szScKzrV51qLZl YY+lgJyy4Qwi7XO7MJKtQ2yGQahXrE5ZljVdzbacgqnVy6AflR/IzeVf0TkJAgXorLuh Ggql9GArARjH/3l7M7hM2jjBZLY7hH/o/vMfj5rnMscwfhcxnweQEOum1xtH36RsTu0o mD8wleadfHtXjbGsN6c1zIugSWcQ20+wcJCWdGgsM4H2yGxduYePgTwQ9hD7eKiCxf02 9zOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="gjMoE/l1"; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t4si17423738pgv.226.2021.10.12.06.13.56; Tue, 12 Oct 2021 06:14:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="gjMoE/l1"; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236535AbhJLNP5 (ORCPT + 99 others); Tue, 12 Oct 2021 09:15:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:44366 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233100AbhJLNP4 (ORCPT ); Tue, 12 Oct 2021 09:15:56 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9786E61078; Tue, 12 Oct 2021 13:13:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1634044435; bh=4FGOLmNQJMmUgDWb+dTvwIIEaKS0/Q7X1H8P1XqrZOc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=gjMoE/l11PPKEax9JjFgpEL+X6KyXCfywTcNuAe9p6DtS2XxRRqwOeJJ3j1wk0kzN 5cv5RVT6oiqfZV3kLahYIr5+yEC2H9688wGFTdM8pII3ZahmuDffx0Yviy+BatjNro ++u7aAm/n73SxakwvdH5j1YbQpJOBAa6f+l7lv+9/lMUcEub57i9wqLDuQYuJtQGTV VzXXU8WG23Ls1Yl5CW0TZDOe2nUImnbqtZDe3JlawJHebQRHOspqkn1/rZJQw9lNz/ mNmcVBtmpfKqZB+teHpEIREPZfm+ZwxdmkmvWpnxTily83PTT0utXCavIEed5RvNXn 8icOkAYUm27TA== Date: Tue, 12 Oct 2021 06:13:52 -0700 From: Keith Busch To: Christoph Hellwig Cc: Jens Axboe , "Martin K. Petersen" , "J. Bruce Fields" , Chuck Lever , linux-block@vger.kernel.org, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org, linux-nfs@vger.kernel.org Subject: Re: [PATCH 2/7] sd: implement ->get_unique_id Message-ID: <20211012131352.GC635062@dhcp-10-100-145-180.wdc.com> References: <20211012120445.861860-1-hch@lst.de> <20211012120445.861860-3-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20211012120445.861860-3-hch@lst.de> Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Tue, Oct 12, 2021 at 02:04:40PM +0200, Christoph Hellwig wrote: > +static int sd_get_unique_id(struct gendisk *disk, u8 id[16], u8 type) > +{ > + struct scsi_device *sdev = scsi_disk(disk)->device; > + const struct scsi_vpd *vpd; > + const unsigned char *d; > + int len = -ENXIO; > + > + rcu_read_lock(); > + vpd = rcu_dereference(sdev->vpd_pg83); > + if (!vpd) > + goto out_unlock; > + > + len = -EINVAL; > + for (d = vpd->data + 4; d < vpd->data + vpd->len; d += d[3] + 4) { > + /* we only care about designators with LU association */ > + if (((d[1] >> 4) & 0x3) != 0x00) > + continue; > + if ((d[1] & 0xf) != type) > + continue; > + > + /* > + * Only exit early if a 16-byte descriptor was found. Otherwise > + * keep looking as one with more entropy might still show up. > + */ > + len = d[3]; > + if (len != 8 && len != 12 && len != 16) > + continue; I think you need a temporary variable instead of assigning directly to 'len' here. Otherwise, the 'len' returned will be whatever the last iteration was, which may not be then len that was copied into the 'id'. > + memcpy(id, d + 4, len); > + if (len == 16) > + break; > + } > +out_unlock: > + rcu_read_unlock(); > + return len; > +}