On Wed, Dec 14, 2016 at 01:24:52PM +0100, Philipp Hahn wrote: > From: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > [ Upstream commit 7bc2b55a5c030685b399bb65b6baa9ccc3d1f167 ] > > We need to put an upper bound on "user_len" so the memcpy() doesn't > overflow. > > References: CVE-2016-7425 > Cc: <stable@xxxxxxxxxxxxxxx> > Reported-by: Marco Grassi <marco.gra@xxxxxxxxx> > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > Reviewed-by: Tomas Henzl <thenzl@xxxxxxxxxx> > Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx> > Signed-off-by: Philipp Hahn <hahn@xxxxxxxxxxxxx> > --- > 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 -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html