[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.
|