Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp5224526ybl; Tue, 27 Aug 2019 01:05:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqxWPGp9VrErkU61GW9751mxW1DdLRYcniOWzky2Z5CYLynYZhn7YqeMqRc1Btr9KmWSR98y X-Received: by 2002:a17:90a:b946:: with SMTP id f6mr24318353pjw.86.1566893128770; Tue, 27 Aug 2019 01:05:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566893128; cv=none; d=google.com; s=arc-20160816; b=MerxEmuCRaYg4r+c+03KdlxfrZXzcsNn/wchzyavTm2RQjYRrfwCrxWuGg9C9s/3AD c7XbYjfWaanqWPTuJviQ1D0FcKCtLe2nx4aoePxsj9XkfayL1Jq4Zgwxdt8iPdcu6WdH Lt8SldM9v5zVMfJFKlfZjcyeazGG+r+nhoz6dXkKO1nQxgZvHDarDaOh2k0PZLKWlh8i WUOrTxZjVTOnmY1ZrvSvtXYT3XrupuZOCmddciybBDTDM2DVGEXFwwnau9lHJgcpZnNZ CqNC4DmNAa8LVmcbD+wwQ3MhXQf2qjBJbOaN/uSjvY+EzsOfpL8KFk3RV+7i/aLotJ5x Qp2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=CqH91kOsYNtOyr/gbwmNLZzvCUyb6YsWgPzMR2alhuw=; b=1IYSozfiJxOaA/Dgk6cSAShjX6HqrjMAAiBUpQUBaODHbTomTz/BDRqULqB9uafF9K Es1yONS6nhUxGfDvmEKxv25vXQ7rs5BZZQGsa8Vllvxcd9eFmmlmB/OtHMHt7er59tLy 1EFr9gXS4tHXDblIC0A/6LlEutlwFYnAouFEiRC7gWY9ej2UidTJjaIDqCRHhRgAYqwG VuQ0EugAk7yyOtxFqik8c7WYNAGyoxehPx9EIZzgySOCcW44vWLOu32JaBqZrhvUWB0k JAKeaNBBLJgZ4zy1rGQxtcjb7xuhW2eupLEoij0IWQEfFhPJ+hFacdcKIvC+qDsWvZXm Og4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="Vuizu/5a"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k9si7805211pls.313.2019.08.27.01.05.13; Tue, 27 Aug 2019 01:05:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="Vuizu/5a"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732459AbfH0IEI (ORCPT + 99 others); Tue, 27 Aug 2019 04:04:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:33308 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730433AbfH0IEC (ORCPT ); Tue, 27 Aug 2019 04:04:02 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 277A4206BF; Tue, 27 Aug 2019 08:04:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566893041; bh=EckM6EaT5wZqSIkZEo54Rgu+k2ypMTKdIE9vRi5T4LE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Vuizu/5aQTBxt1MzQcnG4Exlo7sMKG8rQWL6CY+RRZHu4v9oK9VswIaFwYZ+vzWFx fqlH6upaV0oz2JclAyb4fAxEcDI2nhPUIhr37qfgaf1fmibbSh5ADtayijFNC7jm9z PhGUjdB/iCre8HQlSUfAqnsNC5A2I/8nCxrKZBJI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kees Cook , Jens Axboe , Sasha Levin Subject: [PATCH 5.2 098/162] libata: add SG safety checks in SFF pio transfers Date: Tue, 27 Aug 2019 09:50:26 +0200 Message-Id: <20190827072741.639793873@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190827072738.093683223@linuxfoundation.org> References: <20190827072738.093683223@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 752ead44491e8c91e14d7079625c5916b30921c5 ] Abort processing of a command if we run out of mapped data in the SG list. This should never happen, but a previous bug caused it to be possible. Play it safe and attempt to abort nicely if we don't have more SG segments left. Reviewed-by: Kees Cook Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- drivers/ata/libata-sff.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 10aa278821427..4f115adb4ee83 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -658,6 +658,10 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) unsigned int offset; unsigned char *buf; + if (!qc->cursg) { + qc->curbytes = qc->nbytes; + return; + } if (qc->curbytes == qc->nbytes - qc->sect_size) ap->hsm_task_state = HSM_ST_LAST; @@ -683,6 +687,8 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) if (qc->cursg_ofs == qc->cursg->length) { qc->cursg = sg_next(qc->cursg); + if (!qc->cursg) + ap->hsm_task_state = HSM_ST_LAST; qc->cursg_ofs = 0; } } -- 2.20.1