From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754555AbdBNPbO (ORCPT ); Tue, 14 Feb 2017 10:31:14 -0500 Received: from verein.lst.de ([213.95.11.211]:50917 "EHLO newverein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754326AbdBNPa7 (ORCPT ); Tue, 14 Feb 2017 10:30:59 -0500 Date: Tue, 14 Feb 2017 16:30:46 +0100 From: Torsten Duwe To: Jiri Slaby Cc: stable@vger.kernel.org, Herbert Xu , linux-kernel@vger.kernel.org Subject: [PATCH] Fix af_alg in 3.12 Message-ID: <20170214153046.GB27168@lst.de> References: <20170201121305.GA3260@lst.de> <20170203120548.GA31291@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170203120548.GA31291@lst.de> User-Agent: Mutt/1.5.17 (2007-11-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 03, 2017 at 01:05:48PM +0100, Torsten Duwe wrote: > > If Herbert does not have a better idea, I suggest to back out this change and fix > dynamically allocated key structures for the individual algorithms instead, for > the older branches. So, the solution IMHO is to revert b2a0707817d3dec83652bb460a7775613058aedd f382cd5ac26674877143fa7d9c0ea23c6640e706 c25e22ff51d3bebf579a054aecbaa98c81149c02 1e3f8a31f01e5967fcf413d72832ce41aa4efd1d 79adba68c32883c6559dc80040e97c35e208c7f1 82a0aa2c08de674191cf5e99b649af145c5ade25 that is the whole sequence from 82a0aa2c08de674191..b2a0707817d3dec836 backwards sans b9da7c51a11a2e7 which is a separate, unrelated fix. This series aimed to fix the whole class of problems and creates and fixes its own ABI breakage. But since that problem class contains exactly 1 element, fix instead the one broken algorithm with a dynamically allocated member in its context that gets initialised during setkey. Signed-off-by: Torsten Duwe Cc: # v3.0+ diff --git a/crypto/lrw.c b/crypto/lrw.c index 6f9908a..4c9257d 100644 --- a/crypto/lrw.c +++ b/crypto/lrw.c @@ -150,6 +150,9 @@ static int crypt(struct blkcipher_desc *d, u8 *wsrc; u8 *wdst; + if (!(ctx->table.table)) + return -ENOKEY; + err = blkcipher_walk_virt(d, w); if (!(avail = w->nbytes)) return err; @@ -229,6 +232,9 @@ int lrw_crypt(struct blkcipher_desc *desc, struct scatterlist *sdst, BUG_ON(max_blks < 1); + if (!ctx->table) + return -ENOKEY; + blkcipher_walk_init(&walk, sdst, ssrc, nbytes); err = blkcipher_walk_virt(desc, &walk);