From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751542AbcIIEJn (ORCPT ); Fri, 9 Sep 2016 00:09:43 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:36481 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750710AbcIIEJk (ORCPT ); Fri, 9 Sep 2016 00:09:40 -0400 Subject: Re: Kernel panic - encryption/decryption failed when open file on Arm64 To: Herbert Xu References: <57D15BD3.40903@huawei.com> <20160908124709.GA26586@gondor.apana.org.au> CC: , , , , , , , , Bintian , , Huxinwei , From: xiakaixu Message-ID: <57D235D3.9010107@huawei.com> Date: Fri, 9 Sep 2016 12:08:51 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <20160908124709.GA26586@gondor.apana.org.au> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.182.180] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020203.57D235E2.0087,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 11d8944132b7b6b872f38d5eb746961c Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Sorry for resend this email, just add the linux-crypto@vger.kernel.org and linux-kernel@vger.kernel.org. Hi, Firstly, thanks for your reply! To reproduce this kernel panic, I test the encryption/decryption feature on arm64 board with more memory. Just add the following change: diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c index 0122bec..10ef3f4 100644 --- a/crypto/blkcipher.c +++ b/crypto/blkcipher.c @@ -240,6 +240,7 @@ static int blkcipher_walk_next(struct blkcipher_desc *desc, walk->flags |= BLKCIPHER_WALK_COPY; if (!walk->page) { walk->page = (void *)__get_free_page(GFP_ATOMIC); + walk->page = NULL; if (!walk->page) n = 0; } This change just set the walk->page to NULL manually. I get the same crash when open file with the above change log. So I think this NULL page failure is not be handled correctly in current code. Regards Kaixu Xia > On Thu, Sep 08, 2016 at 08:38:43PM +0800, xiakaixu wrote: >> Hi, >> >> I am using the encryption/decryption feature on arm64 board and a kernel >> panic occurs just when open a file. As the memory size of the board >> is limited >> and there are some page allocation failures before the panic. >> >> Seems it is a kernel bug from the call trace log. >> >> ... >> - fscrypt_get_encryption_info >> - get_crypt_info.part.1 >> - validate_user_key.isra.0 >> - derive_aes_gcm_key >> - crypto_gcm_decrypt >> - ablk_decrypt >> - ctr_encrypt >> - blkcipher_walk_done >> - blkcipher_walk_next >> - __get_free_pages >> ----------------------------------> page allocation failure >> ... >> - aes_ctr_encrypt >> -----------------------------------------> the input parameter is >> NULL pointer as the page allocation failure >> >> >> The input parameter of function aes_ctr_encrypt() comes from the >> /struct blkcipher_walk// >> //walk/, and this variable /walk /is allocated by the function >> __get_free_pages(). So if this >> page allocate failed, the input parameter of function >> aes_ctr_encrypt() will be NULL. The >> panic will occurs if we don't check the input parameter. >> >> Not sure about this and wish to get your opinions! > > If the page allocation fails in blkcipher_walk_next it'll simply > switch over to processing it block by block. so I don't think the > warning is related to the crash. > > Cheers, >