> +static int setup_device(struct xenbus_device *dev, struct > netfront_info *info) +{ > + struct netif_tx_sring *txs; > + struct netif_rx_sring *rxs; > + int err; > + struct net_device *netdev = info->netdev; > + > + info->tx_ring_ref = GRANT_INVALID_REF; > + info->rx_ring_ref = GRANT_INVALID_REF; > + info->rx.sring = NULL; > + info->tx.sring = NULL; > + info->irq = 0; > + > + txs = (struct netif_tx_sring *)get_zeroed_page(GFP_KERNEL); > + if (!txs) { > + err = -ENOMEM; > + xenbus_dev_fatal(dev, err, "allocating tx ring > page"); > + goto fail; > + } > + rxs = (struct netif_rx_sring *)get_zeroed_page(GFP_KERNEL); > + if (!rxs) { > + err = -ENOMEM; > + xenbus_dev_fatal(dev, err, "allocating rx ring > page"); > + free_page((unsigned long)txs); > + goto fail; > + } > + info->backend_state = BEST_DISCONNECTED; > + > + SHARED_RING_INIT(txs); > + FRONT_RING_INIT(&info->tx, txs, PAGE_SIZE); > + > + SHARED_RING_INIT(rxs); > + FRONT_RING_INIT(&info->rx, rxs, PAGE_SIZE); > + > + err = xenbus_grant_ring(dev, virt_to_mfn(txs)); > + if (err < 0) > + goto fail; > + info->tx_ring_ref = err; > + > + err = xenbus_grant_ring(dev, virt_to_mfn(rxs)); > + if (err < 0) > + goto fail; > + info->rx_ring_ref = err; > + > + err = xenbus_alloc_evtchn(dev, &info->evtchn); > + if (err) > + goto fail; > + > + memcpy(netdev->dev_addr, info->mac, ETH_ALEN); > + network_connect(netdev); > + info->irq = bind_evtchn_to_irqhandler( > + info->evtchn, netif_int, SA_SAMPLE_RANDOM, > netdev->name, >
This doesn't look like a real random entropy source. packets arriving from another domain are easily timed. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html