[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 15/16] xen-blkback: Minor cleanups


  • To: Demi Marie Obenour <demi@xxxxxxxxxxxxxxxxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Tue, 6 Jun 2023 10:36:46 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=S6INsdJ1n32OVaU383frmFkt03u0vVN7aPYBXbQQaro=; b=UKf20v1kivOLm7zc58BreNTZW6u/3F/od8nkS8mVvfqrdEaKKObRA/e9Eky8VY+xdsa/T+6wZ7/2u3d6wzYNofOs5quCHmbRGSVBH3eKg7orgm3UZ5s5P2kkMI/LezqllnDQRIa7MPOdQKz3DKzC++g/uJL0dHNsBJjM8tu5HcHzAoBdPa48hSxCtpVVOfG6z91/xTVSH9qgLA+DLFxbK7aQ5qtW/B9QoA3LH3+PiZDKRlHaXBQOR2w2tMfJIcmNr5FDDxv8zm1omL7ntvoWkUu0YfpFcMRiOppSQSYIc5vaA7mDzubyppNqGnewcCoFT7n2b6EGfdbuy0yOgO+4CQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZpuEPFgP+JwShstoCSCA7E86quWZexi2SOmGXIHKvwYMp+I4aMCs/7TOMhLnwLGAEsq7FLm1Wd+nbXpaNHvFMxrta/yYTujpLQOy55nWrHk8NmSxLTjlqhDZO/q09/7ZCKWWoM29BzCjlz1kK3DmyvFhtRxVw8RntF8oep4f2r38FoTOp8FdVqFj5vZFI829fOpsF+WLifFH8udds7kGyIgd9gJHBnCHPv/DPIStQ6xO5ILsoZB06wMLJIk8dClDCGRnW3T+MZb+tf4OrfjTQEPAFt2Ot8Yl0AqcTqfUhMzwAoR5xFmYZ2GJRjBYFMkqtb0DeKRHenQzRUmejw9rYA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Jens Axboe <axboe@xxxxxxxxx>, Alasdair Kergon <agk@xxxxxxxxxx>, Mike Snitzer <snitzer@xxxxxxxxxx>, dm-devel@xxxxxxxxxx, Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>, linux-block@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Tue, 06 Jun 2023 08:37:14 +0000
  • Ironport-data: A9a23:U0VeX6uudYvvsIKg6EibXS7RyufnVBReMUV32f8akzHdYApBsoF/q tZmKWnVMvmKa2v3KYxza4nn9kJS7ZTQxoBnS1Bu+CE8Qi8X+JbJXdiXEBz9bniYRiHhoOCLz O1FM4Wdc5pkJpP4jk3wWlQ0hSAkjclkfpKlVKiffHg3HVQ+IMsYoUoLs/YjhYJ1isSODQqIu Nfjy+XSI1bg0DNvWo4uw/vrRChH4rKq4Fv0gnRkPaoQ5AGGySFMZH4iDfrZw0XQE9E88tGSH 44v/JnhlkvF8hEkDM+Sk7qTWiXmlZaLYGBiIlIPM0STqkAqSh4ai87XB9JFAatjsB2bnsgZ9 Tl4ncfYpTHFnEH7sL91vxFwS0mSNEDdkVPNCSDXXce7lyUqf5ZwqhnH4Y5f0YAwo45K7W9yG fMwKS8sXhCBiMaP2K+dFOtKqON/HNPNBdZK0p1g5Wmx4fcOZ7nmGv+PyfoGmTA6i4ZJAOrUY NcfZXx3dhPcbhZTO1ARTpUjgOOvgXq5eDpdwL6XjfNvvy6Pk0osgf60b4a9lt+iHK25mm6Co W3L5SLhCwwyP92D0zuVtHmrg4cjmAuiAdpORO3nq6ECbFu7/VMfCxIvEnmAntLmjVbhZfx7d xE15X97xUQ13AnxJjXnZDW0rXuFlh8aRdtLEuc+5R2Ny6zb+AKQDC4PSTspQNU2vsg7bT8nz FmEm5XlBlRHubKWYWiQ+redsXW5Pi19BXQEZDMWQBEt4NT5pow3yBXVQb5LHKvwgtDrFDXY2 T2GrCEiwb4UiKYj0qyh+FndjjGEp57XTxU07AHaQmKk6AxiYIevIYev7DDz6fdGMZbcRF2Gt 3sshceT9qYNAIuLmSjLR/8CdJmt5vCYIHjfjERpEp0J6Tug4TigcJpW7TU4I11mWu4UdDmsb ELNtAd54J5IIGDsfaJxe5i2Cckh0e7nD9uNaxzPRt9HY5w0eArZ+ihrPBSUxzq0zxRqlrwjM 5CGd8rqFWwdFals0DuxQaEazKMvwSc9g2jUQPgX0iia7FZXX1bNIZ9tDbdERrlRAH+syOkNz +tiCg==
  • Ironport-hdrordr: A9a23:Rni8VaGk7tZ61vHTpLqE5seALOsnbusQ8zAXPiFKJSC9F/byqy nAppsmPHPP5gr5OktBpTnwAsi9qBrnnPYejLX5Vo3SPzUO1lHYSb1K3M/PxCDhBj271sM179 YFT0GmMqyTMWRH
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Tue, May 30, 2023 at 04:31:15PM -0400, Demi Marie Obenour wrote:
> This adds a couple of BUILD_BUG_ON()s and moves some arithmetic after
> the validation code that checks the arithmetic’s preconditions.  The
> previous code was correct but could potentially trip sanitizers that
> check for unsigned integer wraparound.
> 
> Signed-off-by: Demi Marie Obenour <demi@xxxxxxxxxxxxxxxxxxxxxx>
> ---
>  drivers/block/xen-blkback/blkback.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/block/xen-blkback/blkback.c 
> b/drivers/block/xen-blkback/blkback.c
> index 
> c362f4ad80ab07bfb58caff0ed7da37dc1484fc5..ac760a08d559085ab875784f1c58cdf2ead95a43
>  100644
> --- a/drivers/block/xen-blkback/blkback.c
> +++ b/drivers/block/xen-blkback/blkback.c
> @@ -1342,6 +1342,8 @@ static int dispatch_rw_block_io(struct xen_blkif_ring 
> *ring,
>       nseg = req->operation == BLKIF_OP_INDIRECT ?
>              req->u.indirect.nr_segments : req->u.rw.nr_segments;
>  
> +     BUILD_BUG_ON(offsetof(struct blkif_request, u.rw.id) != 8);
> +     BUILD_BUG_ON(offsetof(struct blkif_request, u.indirect.id) != 8);

Won't it be clearer as:

offsetof(struct blkif_request, u.rw.id) != offsetof(struct blkif_request, 
u.indirect.id)

We don't really care about the specific offset value, but both layouts
must match.

Also, you likely want to check for all requests types, not just rw and
indirect (discard and other).

>       if (unlikely(nseg == 0 && operation_flags != REQ_PREFLUSH) ||
>           unlikely((req->operation != BLKIF_OP_INDIRECT) &&
>                    (nseg > BLKIF_MAX_SEGMENTS_PER_REQUEST)) ||
> @@ -1365,13 +1367,13 @@ static int dispatch_rw_block_io(struct xen_blkif_ring 
> *ring,
>               preq.sector_number     = req->u.rw.sector_number;
>               for (i = 0; i < nseg; i++) {
>                       pages[i]->gref = req->u.rw.seg[i].gref;
> -                     seg[i].nsec = req->u.rw.seg[i].last_sect -
> -                             req->u.rw.seg[i].first_sect + 1;
> -                     seg[i].offset = (req->u.rw.seg[i].first_sect << 9);
>                       if ((req->u.rw.seg[i].last_sect >= (XEN_PAGE_SIZE >> 
> 9)) ||
>                           (req->u.rw.seg[i].last_sect <
>                            req->u.rw.seg[i].first_sect))
>                               goto fail_response;
> +                     seg[i].nsec = req->u.rw.seg[i].last_sect -
> +                             req->u.rw.seg[i].first_sect + 1;
> +                     seg[i].offset = (req->u.rw.seg[i].first_sect << 9);

Parentheses here are unneeded.  If we do that move, we might as well
move the assignation of pages[i]->gref as well, just to avoid
assigning to gref to take the failure path.

I do think however wraparound is not an issue here, as we will discard
the result.

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.