[Devel] [patch crash v2 2/2] namespace support for net command

Dave Anderson anderson at redhat.com
Thu Dec 4 11:12:55 PST 2014



----- Original Message -----
> net without arguments shows network devices in init_net
> net -n  --  in network namespace of current task
> net -n pid|taskp -- in network namespace of specified task
> 
> Signed-off-by: Vasily Averin <vvs at openvz.org>

... [ cut ] ...

>  static void
> -show_net_devices_v3(void)
> +show_net_devices_v3(ulong task)
>  {
> +	ulong nsproxy_p, net_ns_p;
>  	struct list_data list_data, *ld;
>  	char *net_device_buf;
>  	char buf[BUFSIZE];
> @@ -523,8 +542,15 @@ show_net_devices_v3(void)
>  	ld =  &list_data;
>  	BZERO(ld, sizeof(struct list_data));
>  	ld->flags |= LIST_ALLOCATE;
> -	ld->start = ld->end =
> -		 symbol_value("init_net") + OFFSET(net_dev_base_head);
> +	if (VALID_MEMBER(task_struct_nsproxy)) {
> +		readmem(task + OFFSET(task_struct_nsproxy), KVADDR, &nsproxy_p,
> +			sizeof(ulong), "task_struct.nsproxy", FAULT_ON_ERROR);
> +		if (!readmem(nsproxy_p + OFFSET(nsproxy_net_ns), KVADDR, &net_ns_p,
> +			sizeof(ulong), "nsproxy.net_ns", RETURN_ON_ERROR|QUIET))
> +			error(FATAL, "cannot determine net_namespace location!\n");
> +	} else
> +		net_ns_p = symbol_value("init_net");
> +	ld->start = ld->end = net_ns_p + OFFSET(net_dev_base_head);
>  	ld->list_head_offset = OFFSET(net_device_dev_list);

Shouldn't the VALID_MEMBER test above be for nsproxy.net_ns?
It looks task_struct.nsproxy was introduced in 2.6.19, but
nsproxy.net_ns didn't come along until 2.6.24.

Dave




More information about the Devel mailing list