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, 9 Aug 2011 10:15:18 +0100
From:	Ian Campbell <Ian.Campbell@...rix.com>
To:	Olaf Hering <olaf@...fle.de>
CC:	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"Jeremy Fitzhardinge" <jeremy@...p.org>,
	Konrad <konrad.wilk@...cle.com>,
	"xen-devel@...ts.xensource.com" <xen-devel@...ts.xensource.com>
Subject: Re: [Xen-devel] [PATCH 1/3] xen/pv-on-hvm kexec: add xs_introduce
 to shutdown watches from old kernel

> Index: linux-3.0/drivers/xen/xenbus/xenbus_xs.c
> ===================================================================
> --- linux-3.0.orig/drivers/xen/xenbus/xenbus_xs.c
> +++ linux-3.0/drivers/xen/xenbus/xenbus_xs.c
> @@ -620,6 +620,20 @@ static struct xenbus_watch *find_watch(c
>  	return NULL;
>  }
>  
> +static int xs_introduce(const char *domid, const char *mfn, const char *port)
> +{
> +	struct kvec iov[3];
> +
> +	iov[0].iov_base = (char *)domid;
> +	iov[0].iov_len = strlen(domid) + 1;
> +	iov[1].iov_base = (char *)mfn;
> +	iov[1].iov_len = strlen(mfn) + 1;
> +	iov[2].iov_base = (char *)port;
> +	iov[2].iov_len = strlen(port) + 1;
> +
> +	return xs_error(xs_talkv(XBT_NIL, XS_INTRODUCE, iov,
> +				 ARRAY_SIZE(iov), NULL));

What should we do if this fails?

> +}
>  /* Register callback to watch this node. */
>  int register_xenbus_watch(struct xenbus_watch *watch)
>  {
> @@ -867,10 +881,11 @@ static int xenbus_thread(void *unused)
>  	return 0;
>  }
>  
> -int xs_init(void)
> +int xs_init(unsigned long xen_store_mfn)
>  {
>  	int err;
>  	struct task_struct *task;
> +	char domid[12], mfn[24], port[24];
>  
>  	INIT_LIST_HEAD(&xs_state.reply_list);
>  	spin_lock_init(&xs_state.reply_lock);
> @@ -897,5 +912,15 @@ int xs_init(void)
>  	if (IS_ERR(task))
>  		return PTR_ERR(task);
>  
> +	snprintf(domid, sizeof(domid), "%u", DOMID_SELF);
> +	snprintf(mfn, sizeof(mfn), "%lu", xen_store_mfn);
> +	snprintf(port, sizeof(port), "%d", xen_store_evtchn);

These can be within the if, or better within the xs_introduce function
itself.

> +	if (xen_hvm_domain()) {
> +		/* shutdown watches for kexec boot */
> +		err = xs_introduce(domid, mfn, port);
> +		if (err)
> +			printk(KERN_WARNING "xs_introduce failed: %d\n", err);
> +	}
> +
>  	return 0;
>  }
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@...ts.xensource.com
> http://lists.xensource.com/xen-devel


--
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