]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
Merge branch 'stable/for-linus-3.3' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 10 Jan 2012 18:09:59 +0000 (10:09 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 10 Jan 2012 18:09:59 +0000 (10:09 -0800)
* 'stable/for-linus-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: (37 commits)
  xen/pciback: Expand the warning message to include domain id.
  xen/pciback: Fix "device has been assigned to X domain!" warning
  xen/pciback: Move the PCI_DEV_FLAGS_ASSIGNED ops to the "[un|]bind"
  xen/xenbus: don't reimplement kvasprintf via a fixed size buffer
  xenbus: maximum buffer size is XENSTORE_PAYLOAD_MAX
  xen/xenbus: Reject replies with payload > XENSTORE_PAYLOAD_MAX.
  Xen: consolidate and simplify struct xenbus_driver instantiation
  xen-gntalloc: introduce missing kfree
  xen/xenbus: Fix compile error - missing header for xen_initial_domain()
  xen/netback: Enable netback on HVM guests
  xen/grant-table: Support mappings required by blkback
  xenbus: Use grant-table wrapper functions
  xenbus: Support HVM backends
  xen/xenbus-frontend: Fix compile error with randconfig
  xen/xenbus-frontend: Make error message more clear
  xen/privcmd: Remove unused support for arch specific privcmp mmap
  xen: Add xenbus_backend device
  xen: Add xenbus device driver
  xen: Add privcmd device driver
  xen/gntalloc: fix reference counts on multi-page mappings
  ...

1  2 
drivers/block/xen-blkback/xenbus.c
drivers/net/xen-netback/netback.c
drivers/net/xen-netfront.c
drivers/xen/xenbus/xenbus_xs.c
include/xen/interface/io/xs_wire.h

index 8069322e4c9e8baa7aab978821e1d4e2f00a0f98,edbb69ebdf20b33d3bd3a9742a61557ba5f36a6a..37c794d312644d30430446d32e3ed844565cc362
@@@ -613,7 -613,7 +613,7 @@@ static void frontend_changed(struct xen
        case XenbusStateConnected:
                /*
                 * Ensure we connect even when two watches fire in
 -               * close successsion and we miss the intermediate value
 +               * close succession and we miss the intermediate value
                 * of frontend_state.
                 */
                if (dev->state == XenbusStateConnected)
@@@ -787,17 -787,14 +787,14 @@@ static const struct xenbus_device_id xe
  };
  
  
- static struct xenbus_driver xen_blkbk = {
-       .name = "vbd",
-       .owner = THIS_MODULE,
-       .ids = xen_blkbk_ids,
+ static DEFINE_XENBUS_DRIVER(xen_blkbk, ,
        .probe = xen_blkbk_probe,
        .remove = xen_blkbk_remove,
        .otherend_changed = frontend_changed
};
);
  
  
  int xen_blkif_xenbus_init(void)
  {
-       return xenbus_register_backend(&xen_blkbk);
+       return xenbus_register_backend(&xen_blkbk_driver);
  }
index 639cf8ab62ba09b26af2d1796da1463bd4763cfc,951c713cb2c8726054e5537fdaa5f21d44dc7fd1..59effac15f36ad0d87b92858223436b2152225c5
@@@ -395,7 -395,7 +395,7 @@@ static void netbk_gop_frag_copy(struct 
        struct gnttab_copy *copy_gop;
        struct netbk_rx_meta *meta;
        /*
 -       * These variables a used iff get_page_ext returns true,
 +       * These variables are used iff get_page_ext returns true,
         * in which case they are guaranteed to be initialized.
         */
        unsigned int uninitialized_var(group), uninitialized_var(idx);
@@@ -940,6 -940,8 +940,6 @@@ static struct gnttab_copy *xen_netbk_ge
                if (!page)
                        return NULL;
  
 -              netbk->mmap_pages[pending_idx] = page;
 -
                gop->source.u.ref = txp->gref;
                gop->source.domid = vif->domid;
                gop->source.offset = txp->offset;
@@@ -1019,7 -1021,7 +1019,7 @@@ static int xen_netbk_tx_check_gop(struc
                pending_idx = *((u16 *)skb->data);
                xen_netbk_idx_release(netbk, pending_idx);
                for (j = start; j < i; j++) {
 -                      pending_idx = frag_get_pending_idx(&shinfo->frags[i]);
 +                      pending_idx = frag_get_pending_idx(&shinfo->frags[j]);
                        xen_netbk_idx_release(netbk, pending_idx);
                }
  
@@@ -1334,6 -1336,8 +1334,6 @@@ static unsigned xen_netbk_tx_build_gops
                        continue;
                }
  
 -              netbk->mmap_pages[pending_idx] = page;
 -
                gop->source.u.ref = txreq.gref;
                gop->source.domid = vif->domid;
                gop->source.offset = txreq.offset;
@@@ -1634,7 -1638,7 +1634,7 @@@ static int __init netback_init(void
        int rc = 0;
        int group;
  
-       if (!xen_pv_domain())
+       if (!xen_domain())
                return -ENODEV;
  
        xen_netbk_group_nr = num_online_cpus();
                                             "netback/%u", group);
  
                if (IS_ERR(netbk->task)) {
 -                      printk(KERN_ALERT "kthread_run() fails at netback\n");
 +                      printk(KERN_ALERT "kthread_create() fails at netback\n");
                        del_timer(&netbk->net_timer);
                        rc = PTR_ERR(netbk->task);
                        goto failed_init;
index 0a59c57864f510ba5bcaf54df933dfbaa76f49e2,81ff5a7492794a18f8486a65f1807860038cb66c..fa679057630f9152f418e9e2f9b60f549dded7e3
@@@ -201,7 -201,7 +201,7 @@@ static void xennet_sysfs_delif(struct n
  #define xennet_sysfs_delif(dev) do { } while (0)
  #endif
  
 -static int xennet_can_sg(struct net_device *dev)
 +static bool xennet_can_sg(struct net_device *dev)
  {
        return dev->features & NETIF_F_SG;
  }
@@@ -1190,8 -1190,7 +1190,8 @@@ static void xennet_uninit(struct net_de
        gnttab_free_grant_references(np->gref_rx_head);
  }
  
 -static u32 xennet_fix_features(struct net_device *dev, u32 features)
 +static netdev_features_t xennet_fix_features(struct net_device *dev,
 +      netdev_features_t features)
  {
        struct netfront_info *np = netdev_priv(dev);
        int val;
        return features;
  }
  
 -static int xennet_set_features(struct net_device *dev, u32 features)
 +static int xennet_set_features(struct net_device *dev,
 +      netdev_features_t features)
  {
        if (!(features & NETIF_F_SG) && dev->mtu > ETH_DATA_LEN) {
                netdev_info(dev, "Reducing MTU because no SG offload");
@@@ -1709,6 -1707,7 +1709,6 @@@ static void netback_changed(struct xenb
        case XenbusStateInitialised:
        case XenbusStateReconfiguring:
        case XenbusStateReconfigured:
 -      case XenbusStateConnected:
        case XenbusStateUnknown:
        case XenbusStateClosed:
                break;
                if (xennet_connect(netdev) != 0)
                        break;
                xenbus_switch_state(dev, XenbusStateConnected);
 +              break;
 +
 +      case XenbusStateConnected:
                netif_notify_peers(netdev);
                break;
  
@@@ -1914,7 -1910,7 +1914,7 @@@ static void xennet_sysfs_delif(struct n
  
  #endif /* CONFIG_SYSFS */
  
- static struct xenbus_device_id netfront_ids[] = {
+ static const struct xenbus_device_id netfront_ids[] = {
        { "vif" },
        { "" }
  };
@@@ -1941,15 -1937,12 +1941,12 @@@ static int __devexit xennet_remove(stru
        return 0;
  }
  
- static struct xenbus_driver netfront_driver = {
-       .name = "vif",
-       .owner = THIS_MODULE,
-       .ids = netfront_ids,
+ static DEFINE_XENBUS_DRIVER(netfront, ,
        .probe = netfront_probe,
        .remove = __devexit_p(xennet_remove),
        .resume = netfront_resume,
        .otherend_changed = netback_changed,
};
);
  
  static int __init netif_init(void)
  {
index ede860f921df847e3c94a2abda905949737c4e3d,226d1ac55cf43d804c6d7bef0d953bb28e586fc1..d1c217b23a428ee5139727860243aec9a40ff8e8
@@@ -532,21 -532,18 +532,18 @@@ int xenbus_printf(struct xenbus_transac
  {
        va_list ap;
        int ret;
- #define PRINTF_BUFFER_SIZE 4096
-       char *printf_buffer;
-       printf_buffer = kmalloc(PRINTF_BUFFER_SIZE, GFP_NOIO | __GFP_HIGH);
-       if (printf_buffer == NULL)
-               return -ENOMEM;
+       char *buf;
  
        va_start(ap, fmt);
-       ret = vsnprintf(printf_buffer, PRINTF_BUFFER_SIZE, fmt, ap);
+       buf = kvasprintf(GFP_NOIO | __GFP_HIGH, fmt, ap);
        va_end(ap);
  
-       BUG_ON(ret > PRINTF_BUFFER_SIZE-1);
-       ret = xenbus_write(t, dir, node, printf_buffer);
+       if (!buf)
+               return -ENOMEM;
+       ret = xenbus_write(t, dir, node, buf);
  
-       kfree(printf_buffer);
+       kfree(buf);
  
        return ret;
  }
@@@ -621,6 -618,15 +618,6 @@@ static struct xenbus_watch *find_watch(
        return NULL;
  }
  
 -static void xs_reset_watches(void)
 -{
 -      int err;
 -
 -      err = xs_error(xs_single(XBT_NIL, XS_RESET_WATCHES, "", NULL));
 -      if (err && err != -EEXIST)
 -              printk(KERN_WARNING "xs_reset_watches failed: %d\n", err);
 -}
 -
  /* Register callback to watch this node. */
  int register_xenbus_watch(struct xenbus_watch *watch)
  {
@@@ -801,6 -807,12 +798,12 @@@ static int process_msg(void
                goto out;
        }
  
+       if (msg->hdr.len > XENSTORE_PAYLOAD_MAX) {
+               kfree(msg);
+               err = -EINVAL;
+               goto out;
+       }
        body = kmalloc(msg->hdr.len + 1, GFP_NOIO | __GFP_HIGH);
        if (body == NULL) {
                kfree(msg);
@@@ -897,5 -909,9 +900,5 @@@ int xs_init(void
        if (IS_ERR(task))
                return PTR_ERR(task);
  
 -      /* shutdown watches for kexec boot */
 -      if (xen_hvm_domain())
 -              xs_reset_watches();
 -
        return 0;
  }
index f6f07aa35af5f8b0e91347d9707ffd08eccd577f,3c1877caaefcdeba09e951604712599af78f17ed..7cdfca24eafbcc4bc9c1a95f192aaaed6aee5a81
@@@ -29,7 -29,8 +29,7 @@@ enum xsd_sockmsg_typ
      XS_IS_DOMAIN_INTRODUCED,
      XS_RESUME,
      XS_SET_TARGET,
 -    XS_RESTRICT,
 -    XS_RESET_WATCHES
 +    XS_RESTRICT
  };
  
  #define XS_WRITE_NONE "NONE"
@@@ -87,4 -88,7 +87,7 @@@ struct xenstore_domain_interface 
      XENSTORE_RING_IDX rsp_cons, rsp_prod;
  };
  
+ /* Violating this is very bad.  See docs/misc/xenstore.txt. */
+ #define XENSTORE_PAYLOAD_MAX 4096
  #endif /* _XS_WIRE_H */