barrier variable is int, not long. This overflow caused another variable override: err (in PV code) and binfo (in xenlinux code). --- linux-2.6.38.3/drivers/xen/blkfront/blkfront.c.orig 2011-05-02 01:56:29.572723580 +0200 +++ linux-2.6.38.3/drivers/xen/blkfront/blkfront.c 2011-05-02 12:44:20.512128661 +0200 @@ -364,7 +364,7 @@ } err = xenbus_gather(XBT_NIL, info->xbdev->otherend, - "feature-barrier", "%lu", &barrier, + "feature-barrier", "%u", &barrier, NULL); /* * If there's no "feature-barrier" defined, then it means