From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out3-smtp.messagingengine.com ([66.111.4.27]:47456 "EHLO out3-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754032AbcLNQrO (ORCPT ); Wed, 14 Dec 2016 11:47:14 -0500 Date: Wed, 14 Dec 2016 08:46:57 -0800 From: Greg KH To: Philipp Hahn Cc: Sasha Levin , Dan Carpenter , stable@vger.kernel.org, "Martin K. Petersen" Subject: Re: [PATCH 10/16] scsi: arcmsr: Buffer overflow in arcmsr_iop_message_xfer() Message-ID: <20161214164657.GE14036@kroah.com> References: <97b02a4e85d3b3930d24bd157db8e5e8672e55ab.1481713714.git.hahn@univention.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <97b02a4e85d3b3930d24bd157db8e5e8672e55ab.1481713714.git.hahn@univention.de> Sender: stable-owner@vger.kernel.org List-ID: On Wed, Dec 14, 2016 at 01:24:52PM +0100, Philipp Hahn wrote: > From: Dan Carpenter > > [ Upstream commit 7bc2b55a5c030685b399bb65b6baa9ccc3d1f167 ] > > We need to put an upper bound on "user_len" so the memcpy() doesn't > overflow. > > References: CVE-2016-7425 > Cc: > Reported-by: Marco Grassi > Signed-off-by: Dan Carpenter > Reviewed-by: Tomas Henzl > Signed-off-by: Martin K. Petersen > Signed-off-by: Philipp Hahn > --- > drivers/scsi/arcmsr/arcmsr_hba.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c > index 2926295..c9f87cd 100644 > --- a/drivers/scsi/arcmsr/arcmsr_hba.c > +++ b/drivers/scsi/arcmsr/arcmsr_hba.c > @@ -2300,7 +2300,8 @@ static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb, > } > case ARCMSR_MESSAGE_WRITE_WQBUFFER: { > unsigned char *ver_addr; > - int32_t user_len, cnt2end; > + uint32_t user_len; > + int32_t cnt2end; > uint8_t *pQbuffer, *ptmpuserbuffer; > ver_addr = kmalloc(ARCMSR_API_DATA_BUFLEN, GFP_ATOMIC); > if (!ver_addr) { > @@ -2309,6 +2310,11 @@ static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb, > } > ptmpuserbuffer = ver_addr; > user_len = pcmdmessagefld->cmdmessage.Length; > + if (user_len > ARCMSR_API_DATA_BUFLEN) { > + retvalue = ARCMSR_MESSAGE_FAIL; > + kfree(ver_addr); > + goto message_out; > + } > memcpy(ptmpuserbuffer, > pcmdmessagefld->messagedatabuffer, user_len); > spin_lock_irqsave(&acb->wqbuffer_lock, flags); > -- > 2.1.4 I don't understand, what are we supposed to do with this patch? confused, greg k-h