netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Eric Leblond <eric@inl.fr>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: [PATCH 1/4] netfilter: use a linked list of loggers.
Date: Wed, 18 Feb 2009 17:08:22 +0100	[thread overview]
Message-ID: <499C3276.5090402@trash.net> (raw)
In-Reply-To: <1234701437-2754-1-git-send-email-eric@inl.fr>

Eric Leblond wrote:
> +/* return EEXIST if the same logger is registred, 0 on success. */
> +int nf_log_register(u_int8_t pf, struct nf_logger *logger)
>  {
>  	int ret;
> +	const struct nf_logger *llog;
>  
>  	if (pf >= ARRAY_SIZE(nf_loggers))
>  		return -EINVAL;
>  
> -	/* Any setup of logging members must be done before
> -	 * substituting pointer. */
> -	ret = mutex_lock_interruptible(&nf_log_mutex);
> -	if (ret < 0)
> -		return ret;
> +	mutex_lock(&nf_log_mutex);
>  
> -	if (!nf_loggers[pf])
> -		rcu_assign_pointer(nf_loggers[pf], logger);
> -	else if (nf_loggers[pf] == logger)
> -		ret = -EEXIST;
> -	else
> -		ret = -EBUSY;
> +	ret = -EEXIST;
> +	if (pf == NFPROTO_UNSPEC) {
> +		int i;
> +		for (i = NFPROTO_UNSPEC; i < NFPROTO_NUMPROTO; i++)
> +			if (__find_logger(i, logger->name) == NULL) {
> +				ret = 0;
> +				list_add_tail(&(logger->list[i]),
> +						&(nf_loggers_l[i]));
> +			}
> +	} else {
> +		if (__find_logger(pf, logger->name) == NULL) {
> +			ret = 0;
> +			/* register at end of list to honor first register win */
> +			list_add_tail(&(logger->list[pf]),
> +					  &nf_loggers_l[pf]);
> +			llog = rcu_dereference(nf_loggers[pf]);
> +			if (llog == NULL)
> +				rcu_assign_pointer(nf_loggers[pf], logger);
> +		}
> +	}

As the loggers are only registered statically by kernel modules,
I think this check is overkill. Just add them and let it crash
if someone does two registrations of the same logger, it won't
take long to notice. Similar for unregistration, its not worth
the trouble to check whether its actually registered, especially
since the list deletion doesn't even need to know. Just NULL
out the affected nf_loggers pointers and it should be fine.

Sorry for not saying this earlier.

  reply	other threads:[~2009-02-18 16:08 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-02 17:04 [netfilter 0/5] nf_log refactoring Eric Leblond
2009-01-02 17:07 ` [PATCH 1/5] netfilter: use a linked list of loggers Eric Leblond
2009-01-02 17:07 ` [PATCH 2/5] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-01-02 17:07 ` [PATCH 3/5] netfilter: convert logger modules to new API Eric Leblond
2009-01-07  7:17   ` Eric Leblond
2009-01-07 20:05     ` [PATCH 1/6] netfilter: use a linked list of loggers Eric Leblond
2009-01-07 20:05     ` [PATCH 2/6] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-01-07 20:05     ` [PATCH 3/6] netfilter: bind at registration if no logger is already set Eric Leblond
2009-01-07 20:05     ` [PATCH 4/6] netfilter: convert logger modules to new API Eric Leblond
2009-01-07 23:53       ` Jan Engelhardt
2009-01-07 20:05     ` [PATCH 5/6] netfilter: print the list of register loggers Eric Leblond
2009-01-07 23:56       ` Jan Engelhardt
2009-01-08 22:01         ` [PATCH 0/6] rework of nf_log refactoring Eric Leblond
2009-01-08 22:03           ` [PATCH 1/6] netfilter: use a linked list of loggers Eric Leblond
2009-01-08 22:03           ` [PATCH 2/6] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-01-08 22:03           ` [PATCH 3/6] netfilter: bind at registration if no logger is already set Eric Leblond
2009-01-08 22:03           ` [PATCH 4/6] netfilter: convert logger modules to new API Eric Leblond
2009-01-08 22:03           ` [PATCH 5/6] netfilter: print the list of register loggers Eric Leblond
2009-01-08 22:03           ` [PATCH 6/6] netfilter: sysctl support of logger choice Eric Leblond
2009-01-12  7:14           ` [PATCH] netfilter: desactivate nf_log logger via sysctl Eric Leblond
2009-02-09 17:43           ` [PATCH 0/6] rework of nf_log refactoring Patrick McHardy
2009-02-09 21:08             ` Eric Leblond
2009-02-09 21:11               ` [PATCH 1/7] netfilter: use a linked list of loggers Eric Leblond
2009-02-11 14:13                 ` Patrick McHardy
2009-02-15 12:33                   ` Eric Leblond
2009-02-15 12:37                     ` [PATCH 1/4] " Eric Leblond
2009-02-18 16:08                       ` Patrick McHardy [this message]
2009-02-15 12:37                     ` [PATCH 2/4] netfilter: suppress now unused nf_log_unregister_pf() function Eric Leblond
2009-02-18 16:10                       ` Patrick McHardy
2009-02-15 12:37                     ` [PATCH 3/4] netfilter: print the list of register loggers Eric Leblond
2009-02-16 17:01                       ` Jan Engelhardt
2009-02-16 17:11                         ` Patrick McHardy
2009-02-15 12:37                     ` [PATCH 4/4] netfilter: sysctl support of logger choice Eric Leblond
2009-02-18 15:56                       ` Patrick McHardy
2009-02-19 20:59                         ` Eric Leblond
2009-02-19 21:02                           ` Patrick McHardy
2009-02-19 21:52                             ` Eric Leblond
2009-02-19 21:54                               ` [PATCH 1/3] netfilter: use a linked list of loggers Eric Leblond
2009-03-16 13:54                                 ` Patrick McHardy
2009-02-19 21:54                               ` [PATCH 2/3] netfilter: print the list of register loggers Eric Leblond
2009-03-16 13:56                                 ` Patrick McHardy
2009-02-19 21:54                               ` [PATCH 3/3] netfilter: sysctl support of logger choice Eric Leblond
2009-03-16 13:58                                 ` Patrick McHardy
2009-03-17 23:15                                   ` Eric Leblond
2009-03-17 23:27                                     ` [PATCH] " Eric Leblond
2009-03-19  9:45                                       ` Patrick McHardy
2009-03-19 21:46                                         ` Eric Leblond
2009-03-23 12:17                                           ` Patrick McHardy
2009-02-09 21:11               ` [PATCH 2/7] netfilter: suppress nf_log_unregister_pf function Eric Leblond
2009-02-09 21:11               ` [PATCH 3/7] netfilter: bind at registration if no logger is already set Eric Leblond
2009-02-09 21:11               ` [PATCH 4/7] netfilter: convert logger modules to new API Eric Leblond
2009-02-09 21:11               ` [PATCH 5/7] netfilter: print the list of register loggers Eric Leblond
2009-02-09 21:11               ` [PATCH 6/7] netfilter: sysctl support of logger choice Eric Leblond
2009-02-11 14:21                 ` Patrick McHardy
2009-02-09 21:11               ` [PATCH 7/7] netfilter: fix nflog timeout handling Eric Leblond
2009-02-11 14:33                 ` Patrick McHardy
2009-01-07 20:05     ` [PATCH 6/6] netfilter: sysctl support of logger choice Eric Leblond
2009-01-02 17:07 ` [PATCH 4/5] netfilter: print the list of register loggers Eric Leblond
2009-01-02 17:07 ` [PATCH 5/5] netfilter: sysctl support of logger choice Eric Leblond

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=499C3276.5090402@trash.net \
    --to=kaber@trash.net \
    --cc=eric@inl.fr \
    --cc=netfilter-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).