Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932161Ab3IBJFW (ORCPT ); Mon, 2 Sep 2013 05:05:22 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:20151 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932141Ab3IBJFS (ORCPT ); Mon, 2 Sep 2013 05:05:18 -0400 Message-ID: <5224548C.8000603@huawei.com> Date: Mon, 2 Sep 2013 17:04:12 +0800 From: Ding Tianhong User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: Baoquan He CC: Hillf Danton , Cong Wang , LKML , Linux Kernel Network Developers Subject: Re: 3.11-rc7:BUG: soft lockup References: <522055D7.70002@gmail.com> <52242AEA.9020502@gmail.com> <522441E9.8040809@huawei.com> <52244B44.4030703@gmail.com> In-Reply-To: <52244B44.4030703@gmail.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.135.72.199] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3280 Lines: 108 On 2013/9/2 16:24, Baoquan He wrote: > Hi Tianhong, > > I applied your patch and execute below cmd. > Then keyboard inputting problems happened, > I can't enter user/password correctly, then reboot again, it's OK now. Thanks for your work, I don't understand that the keyboard problem is the patch fault or your system problem, if it is not happen again, I think the problem is fixed. > > The original bug still can't be reproduced. > > make SUBDIRS=net/bridge/netfilter/ > cp /net/bridge/netfilter/ebtables.ko > /lib/modules/3.11.0-rc7+/kernel/net/bridge/netfilter/ebtables.ko > depmod > modprobe ebtables.ko > reboot > > Baoquan > Thanks > >> please try this patch and give me the result, thanks. >> >> Return the correct value if mutex_lock_interruptible() failed, avoid >> confusion with that the modules is not exist, and deal with the return >> value in right way. >> >> if mutex_lock_interrupt() failed, sh >> >> Signed-off-by: root >> --- >> net/bridge/netfilter/ebtables.c | 17 +++++++---------- >> 1 file changed, 7 insertions(+), 10 deletions(-) >> >> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c >> index ac78024..e7fe9f8 100644 >> --- a/net/bridge/netfilter/ebtables.c >> +++ b/net/bridge/netfilter/ebtables.c >> @@ -322,17 +322,14 @@ static inline void * >> find_inlist_lock_noload(struct list_head *head, const char *name, int *error, >> struct mutex *mutex) >> { >> - struct { >> - struct list_head list; >> - char name[EBT_FUNCTION_MAXNAMELEN]; >> - } *e; >> + struct ebt_table *e; >> >> *error = mutex_lock_interruptible(mutex); >> if (*error != 0) >> - return NULL; >> + return ERR_PTR(-EINTR); >> >> list_for_each_entry(e, head, list) { >> - if (strcmp(e->name, name) == 0) >> + if (strcmp(e->name, name) == 0 && try_module_get(e->me)) >> return e; >> } >> *error = -ENOENT; >> @@ -1005,7 +1002,7 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl, >> goto free_counterstmp; >> >> t = find_table_lock(net, repl->name, &ret, &ebt_mutex); >> - if (!t) { >> + if (IS_ERR_OR_NULL(t)) { >> ret = -ENOENT; >> goto free_iterate; >> } >> @@ -1284,7 +1281,7 @@ static int do_update_counters(struct net *net, const char *name, >> return -ENOMEM; >> >> t = find_table_lock(net, name, &ret, &ebt_mutex); >> - if (!t) >> + if (IS_ERR_OR_NULL(t)) >> goto free_tmp; >> >> if (num_counters != t->private->nentries) { >> @@ -1504,7 +1501,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len) >> return -EFAULT; >> >> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex); >> - if (!t) >> + if (IS_ERR_OR_NULL(t)) >> return ret; >> >> switch(cmd) { >> @@ -2319,7 +2316,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd, >> return -EFAULT; >> >> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex); >> - if (!t) >> + if (IS_ERR_OR_NULL(t)) >> return ret; >> >> xt_compat_lock(NFPROTO_BRIDGE); > > > . > -- 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/