mirror of https://gitee.com/openkylin/linux.git
xen: fixes for 4.14-rc7
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABAgAGBQJZ8uDpAAoJELDendYovxMvnYAH/iYlLBkNhw2yLScYxMNuMo60 8W82/70UNdC2ZIWlIKQSDsvlU0Omy9Iu51zBrE6SEVKpISxrOvtYO5JiaZGhPAqY 2/Jpeuawdm44uaFPFwajLRsHIhgyuAxMxj7Y+TLFGW/+X6FrmFg5G3CNt5pRf0Ah xraD8O5MYG6FfqxftCLMD8cKlxqslZwZUFuf5CjxSKbw4HTWcTEA7a86toONUI9L hJjmAD6VRW/PgEVrLklQBRRwiSsV1nyBLrY5Q+sSEy9BGGvblO/yEEg8uO6sYmJ0 a9bycTASUbisV1LvCp7HcHFn6h60CZV2XwNgwRaToEF8ebycAw5hq6l7t8pFTNI= =EvbJ -----END PGP SIGNATURE----- Merge tag 'for-linus-4.14c-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip Pull xen fixes from Juergen Gross: - a fix for the Xen gntdev device repairing an issue in case of partial failure of mapping multiple pages of another domain - a fix of a regression in the Xen balloon driver introduced in 4.13 - a build fix for Xen on ARM which will trigger e.g. for Linux RT - a maintainers update for pvops (not really Xen, but carrying through this tree just for convenience) * tag 'for-linus-4.14c-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: maintainers: drop Chris Wright from pvops arm/xen: don't inclide rwlock.h directly. xen: fix booting ballooned down hvm guest xen/gntdev: avoid out of bounds access in case of partial gntdev_mmap()
This commit is contained in:
commit
11224e1fc4
|
@ -10179,7 +10179,6 @@ F: Documentation/parport*.txt
|
|||
|
||||
PARAVIRT_OPS INTERFACE
|
||||
M: Juergen Gross <jgross@suse.com>
|
||||
M: Chris Wright <chrisw@sous-sol.org>
|
||||
M: Alok Kataria <akataria@vmware.com>
|
||||
M: Rusty Russell <rusty@rustcorp.com.au>
|
||||
L: virtualization@lists.linux-foundation.org
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include <linux/bootmem.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/rwlock.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
|
|
|
@ -1024,6 +1024,7 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
|
|||
mutex_unlock(&priv->lock);
|
||||
|
||||
if (use_ptemod) {
|
||||
map->pages_vm_start = vma->vm_start;
|
||||
err = apply_to_page_range(vma->vm_mm, vma->vm_start,
|
||||
vma->vm_end - vma->vm_start,
|
||||
find_grant_ptes, map);
|
||||
|
@ -1061,7 +1062,6 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
|
|||
set_grant_ptes_as_special, NULL);
|
||||
}
|
||||
#endif
|
||||
map->pages_vm_start = vma->vm_start;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -57,7 +57,7 @@ static int register_balloon(struct device *dev);
|
|||
static void watch_target(struct xenbus_watch *watch,
|
||||
const char *path, const char *token)
|
||||
{
|
||||
unsigned long long new_target;
|
||||
unsigned long long new_target, static_max;
|
||||
int err;
|
||||
static bool watch_fired;
|
||||
static long target_diff;
|
||||
|
@ -72,13 +72,20 @@ static void watch_target(struct xenbus_watch *watch,
|
|||
* pages. PAGE_SHIFT converts bytes to pages, hence PAGE_SHIFT - 10.
|
||||
*/
|
||||
new_target >>= PAGE_SHIFT - 10;
|
||||
if (watch_fired) {
|
||||
balloon_set_new_target(new_target - target_diff);
|
||||
return;
|
||||
|
||||
if (!watch_fired) {
|
||||
watch_fired = true;
|
||||
err = xenbus_scanf(XBT_NIL, "memory", "static-max", "%llu",
|
||||
&static_max);
|
||||
if (err != 1)
|
||||
static_max = new_target;
|
||||
else
|
||||
static_max >>= PAGE_SHIFT - 10;
|
||||
target_diff = xen_pv_domain() ? 0
|
||||
: static_max - balloon_stats.target_pages;
|
||||
}
|
||||
|
||||
watch_fired = true;
|
||||
target_diff = new_target - balloon_stats.target_pages;
|
||||
balloon_set_new_target(new_target - target_diff);
|
||||
}
|
||||
static struct xenbus_watch target_watch = {
|
||||
.node = "memory/target",
|
||||
|
|
Loading…
Reference in New Issue