diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-06-20 17:45:23 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-06-20 17:45:23 +0100 |
commit | 639f3f1a2274add4a4d66e2819e424b19751e1b4 (patch) | |
tree | 224f25b55f18983ebd1998f8e74890b63688fa44 /extras/mini-os/netfront.c | |
parent | 0e05d6cdd81662d44e2c6f46ea89a7060012123b (diff) | |
download | xen-639f3f1a2274add4a4d66e2819e424b19751e1b4.tar.gz xen-639f3f1a2274add4a4d66e2819e424b19751e1b4.tar.bz2 xen-639f3f1a2274add4a4d66e2819e424b19751e1b4.zip |
minios: fix add_id_to_freelist(0)
add_id_to_freelist(0) would make get_id_from_freelist() always return 0.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/netfront.c')
-rw-r--r-- | extras/mini-os/netfront.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/extras/mini-os/netfront.c b/extras/mini-os/netfront.c index d01ce6927b..3fff0accdd 100644 --- a/extras/mini-os/netfront.c +++ b/extras/mini-os/netfront.c @@ -38,7 +38,7 @@ struct net_buffer { struct netfront_dev { domid_t dom; - unsigned short tx_freelist[NET_TX_RING_SIZE]; + unsigned short tx_freelist[NET_TX_RING_SIZE + 1]; struct semaphore tx_sem; struct net_buffer rx_buffers[NET_RX_RING_SIZE]; @@ -70,14 +70,14 @@ void init_rx_buffers(struct netfront_dev *dev); static inline void add_id_to_freelist(unsigned int id,unsigned short* freelist) { - freelist[id] = freelist[0]; + freelist[id + 1] = freelist[0]; freelist[0] = id; } static inline unsigned short get_id_from_freelist(unsigned short* freelist) { unsigned int id = freelist[0]; - freelist[0] = freelist[id]; + freelist[0] = freelist[id + 1]; return id; } |