Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752340AbbFDGTT (ORCPT ); Thu, 4 Jun 2015 02:19:19 -0400 Received: from mail-la0-f46.google.com ([209.85.215.46]:34116 "EHLO mail-la0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751232AbbFDGTM (ORCPT ); Thu, 4 Jun 2015 02:19:12 -0400 MIME-Version: 1.0 In-Reply-To: <20150604055128.GA29341@kroah.com> References: <1428999893-6062-1-git-send-email-l.skalski@samsung.com> <20150604055128.GA29341@kroah.com> Date: Thu, 4 Jun 2015 08:19:10 +0200 Message-ID: Subject: Re: [PATCH v2] kdbus: do not append the same connection to the queue twice From: David Herrmann To: Greg KH Cc: Lukasz Skalski , Daniel Mack , Djalal Harouni , Sergei Zviagintsev , linux-kernel Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2288 Lines: 57 Hi On Thu, Jun 4, 2015 at 7:51 AM, Greg KH wrote: > On Tue, Apr 14, 2015 at 10:24:53AM +0200, Lukasz Skalski wrote: >> As it was discussed on systemd ML [1], the same connection should be >> queued up only once for a given well-known name. >> >> [1] http://lists.freedesktop.org/archives/systemd-devel/2015-April/030494.html >> >> Signed-off-by: Lukasz Skalski >> >> diff --git a/ipc/kdbus/names.c b/ipc/kdbus/names.c >> index 657008e..df99e4d 100644 >> --- a/ipc/kdbus/names.c >> +++ b/ipc/kdbus/names.c >> @@ -353,10 +353,24 @@ int kdbus_name_acquire(struct kdbus_name_registry *reg, >> } else if (flags & KDBUS_NAME_QUEUE) { >> /* add to waiting-queue of the name */ >> >> - ret = kdbus_name_pending_new(e, conn, flags); >> - if (ret >= 0) >> - /* tell the caller that we queued it */ >> - rflags |= KDBUS_NAME_IN_QUEUE; >> + struct kdbus_name_pending *p; >> + bool in_queue = false; >> + >> + list_for_each_entry(p, &e->queue, name_entry) { >> + if (p->conn == conn) { >> + /* connection is already queued */ >> + rflags |= KDBUS_NAME_IN_QUEUE; >> + in_queue = true; >> + break; >> + } >> + } >> + >> + if (!in_queue) { >> + ret = kdbus_name_pending_new(e, conn, flags); >> + if (ret >= 0) >> + /* tell the caller that we queued it */ >> + rflags |= KDBUS_NAME_IN_QUEUE; >> + } >> } else { >> /* the name is busy, return a failure */ >> ret = -EEXIST; > > David, did you miss this patch in your last round of kdbus updates? I already talked to Lukasz off-list. There are some more changes required, they'll be included in round #2. Thanks David -- 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/