Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S272128AbTHNByU (ORCPT ); Wed, 13 Aug 2003 21:54:20 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S272130AbTHNByU (ORCPT ); Wed, 13 Aug 2003 21:54:20 -0400 Received: from waste.org ([209.173.204.2]:36817 "EHLO waste.org") by vger.kernel.org with ESMTP id S272128AbTHNByT (ORCPT ); Wed, 13 Aug 2003 21:54:19 -0400 Date: Wed, 13 Aug 2003 20:54:04 -0500 From: Matt Mackall To: Jeff Garzik Cc: James Morris , "David S. Miller" , linux-kernel Subject: Re: [PATCH] cryptoapi: Fix sleeping Message-ID: <20030814015404.GG325@waste.org> References: <20030813233957.GE325@waste.org> <3F3AD5F1.8000901@pobox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3F3AD5F1.8000901@pobox.com> User-Agent: Mutt/1.3.28i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1093 Lines: 29 On Wed, Aug 13, 2003 at 08:21:05PM -0400, Jeff Garzik wrote: > Matt Mackall wrote: > >We need in_atomic() so that we can call from regions where preempt is > >disabled, for instance when using per_cpu crypto tfms. > > > >diff -urN -X dontdiff orig/crypto/internal.h work/crypto/internal.h > >+++ work/crypto/internal.h 2003-08-12 14:38:54.000000000 -0500 > >@@ -37,7 +37,7 @@ > > > > static inline void crypto_yield(struct crypto_tfm *tfm) > > { > >- if (!in_softirq()) > >+ if (!in_atomic()) > > cond_resched(); > > > Do you really want to schedule inside preempt_disable() ? No, that's the point. Cryptoapi has hidden scheduling points and the above code is what's used to check that it doesn't do so when it ought not. But it was broken inside of no-preempt sections. -- Matt Mackall : http://www.selenic.com : of or relating to the moon - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/