lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 12 Dec 2006 13:15:18 -0600
From:	Matt Mackall <mpm@...enic.com>
To:	Keiichi KII <k-keiichi@...jp.nec.com>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: [RFC][PATCH 2.6.19 4/6] switch function of netpoll

On Tue, Dec 12, 2006 at 03:36:00PM +0900, Keiichi KII wrote:
> From: Keiichi KII <k-keiichi@...jp.nec.com>
> 
> This patch contains switch function of netpoll.
> 
> if "enable" attribute of certain port is '1', this port is used.
> if "enable" attribute of certain port is '0', this port isn't used.
> 
> active_netconsole_dev list manages a list of active ports.
> inactive_netconsole_dev list manages a list of inactive ports.
> 
> If you write '0' to "enable" attribute of a port included in
> active_netconsole_dev_list, This port moves from active_netconsole_dev to
> inactive_netconsole_dev and won't used to send kernel message.
> 
> -+- /sys/class/misc/
>  |-+- netconsole/
>    |-+- port1/
>    | |--- id          [r--r--r--]  id
>    | |--- enable      [rw-r--r--]  0: disable, 1: enable, writable
>    | ...
>    |--- port2/
>    ...
> 
> Signed-off-by: Keiichi KII <k-keiichi@...jp.nec.com>
> ---
> --- linux-2.6.19/drivers/net/netconsole.c	2006-12-06 14:37:26.858826500 +0900
> +++ enhanced-netconsole/drivers/net/netconsole.c.switch	2006-12-06
> 13:32:56.744959500 +0900
> @@ -86,9 +86,25 @@ static void netcon_dev_cleanup(struct ne
>  static int netcon_miscdev_configured = 0;
> 
>  static LIST_HEAD(active_netconsole_dev);
> +static LIST_HEAD(inactive_netconsole_dev);
> 
>  static DEFINE_SPINLOCK(netconsole_dev_list_lock);
> 
> +static ssize_t show_enable(struct netconsole_device *nd, char *buf) {
> +	struct netconsole_device *dev;
> +
> +	spin_lock(&netconsole_dev_list_lock);
> +	list_for_each_entry(dev, &active_netconsole_dev, list) {
> +		if (dev->id == nd->id) {
> +			spin_unlock(&netconsole_dev_list_lock);
> +			return sprintf(buf, "1\n");
> +		}
> +	}
> +	spin_unlock(&netconsole_dev_list_lock);
> +
> +	return sprintf(buf, "0\n");
> +}

If we intend to have no more than a couple dozen of these, having a
separate list makes things too complicated. Simply add an enabled
field in the struct and skip disabled targets on netconsole writes.
This function becomes 3 lines.

> +static ssize_t store_enable(struct netconsole_device *nd, const char *buf,
> +			    size_t count)
> +{
> +	struct netconsole_device *dev, *tmp;
> +	struct list_head *src, *dst;
> +
> +	if (strncmp(buf, "1", 1) == 0) {
> +		src = &inactive_netconsole_dev;
> +		dst = &active_netconsole_dev;
> +	} else if(strncmp(buf, "0", 1) == 0) {
> +		src = &active_netconsole_dev;
> +		dst = &inactive_netconsole_dev;
> +	} else {
> +		printk(KERN_INFO "netconsole: invalid argument: %s\n", buf);
> +		return -EINVAL;
> +	}
> +	
> +	spin_lock(&netconsole_dev_list_lock);
> +	list_for_each_entry_safe(dev, tmp, src, list) {
> +		if (dev->id == nd->id) {
> +			list_del(&nd->list);
> +			list_add(&nd->list, dst);
> +			break;
> +		}
> +	}
> +	spin_unlock(&netconsole_dev_list_lock);
> +
> +	return count;
> +}

As does this one.

-- 
Mathematics is the supreme nostalgia of our time.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ