list_for_each_entry:
Subsystems (11)
PATCH 1/1 list_for_each_entry:
Hi.
Make code more readable with list_for_each_entry*
Compile tested.
arch/i386/mm/pageattr.c +2 -6
@@ -178,7 +178,7 @@void global_flush_tlb (void ) {LIST_HEAD (l); -struct list_head * n; +struct page *pg, *next;BUG_ON (irqs_disabled ());
@@ -186,12 +186,8 @@list_splice_init (&df_list, &l);spin_unlock_irq (&cpa_lock);flush_map (); - n = l.next; -while (n != &l) { - struct page *pg = list_entry(n, struct page, lru); - n = n->next; +list_for_each_entry_safe (pg, next, &l, lru)__free_page (pg); - } }#ifdef CONFIG_DEBUG_PAGEALLOC
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
Make code more readable with list_for_each_reverse.
arch/um/drivers/chan_kern.c +1 -3
@@ -166,7 +166,6 @@void close_chan (struct list_head *chans) { -struct list_head *ele;struct chan *chan;/* Close in reverse order as open in case more than one of them
@@ -174,8 +173,7 @@* state. Then, the first one opened will have the original state, * so it must be the last closed. */ -for (ele = chans->prev; ele != chans; ele = ele->prev){ - chan = list_entry(ele, struct chan, list); +list_for_each_entry_reverse (chan, chans, list) {if (!chan->opened)continue ;if (chan->ops->close !=NULL ) (*chan->ops->close)(chan->fd, chan->data);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
(Note that break follows that list_del, so we don't need to use _safe) Compile tested.
drivers/atm/he.c +2 -3
@@ -1962,7 +1962,7 @@struct he_tpd *tpd;int slot, updated =0 ;#ifdef USE_TPD_POOL -struct list_head *p; +struct he_tpd *__tpd;#endif /* 2.1.6 transmit buffer return queue */
@@ -1977,8 +1977,7 @@ TBRQ_MULTIPLE(he_dev->tbrq_head) ? " MULTIPLE" : "");#ifdef USE_TPD_POOL tpd =NULL ; -list_for_each (p, &he_dev->outstanding_tpds) { - struct he_tpd *__tpd = list_entry(p, struct he_tpd, entry); +list_for_each_entry (__tpd, &he_dev->outstanding_tpds, entry) {if (TPD_ADDR (__tpd->status) ==TBRQ_TPD (he_dev->tbrq_head)) { tpd = __tpd;list_del (&__tpd->entry);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
drivers/macintosh/via-pmu.c +4 -14
@@ -2052,12 +2052,9 @@int pmu_register_sleep_notifier (struct pmu_sleep_notifier *n) { -struct list_head *list;struct pmu_sleep_notifier *notifier; -for (list = sleep_notifiers.next; list != &sleep_notifiers; - list = list->next) { - notifier = list_entry(list, struct pmu_sleep_notifier, list); +list_for_each_entry (notifier, &sleep_notifiers, list) {if (n->priority > notifier->priority)break ; }
@@ -2083,8 +2080,7 @@struct list_head *list;struct pmu_sleep_notifier *notifier; -for (list = sleep_notifiers.prev; list != &sleep_notifiers; - list = list->prev) { +list_for_each_prev (list, &sleep_notifiers) { notifier = list_entry(list, struct pmu_sleep_notifier, list); ret = notifier->notifier_call (notifier, when);if (ret !=PBOOK_SLEEP_OK ) {
@@ -2105,14 +2101,10 @@broadcast_wake (void) {int ret =PBOOK_SLEEP_OK ; -struct list_head *list;struct pmu_sleep_notifier *notifier; -for (list = sleep_notifiers.next; list != &sleep_notifiers; - list = list->next) { - notifier = list_entry(list, struct pmu_sleep_notifier, list); +list_for_each_entry (notifier, &sleep_notifiers, list) notifier->notifier_call (notifier,PBOOK_WAKE ); - }return ret; }
@@ -2725,15 +2717,13 @@ pmu_pass_intr(unsigned char *data, int len) {struct pmu_private *pp; -struct list_head *list;int i;unsigned long flags;if (len >sizeof (pp->rb_buf[0 ].data)) len =sizeof (pp->rb_buf[0 ].data);spin_lock_irqsave (&all_pvt_lock, flags); -for (list = &all_pmu_pvt; (list = list->next) != &all_pmu_pvt; ) { - pp = list_entry(list, struct pmu_private, list); +list_for_each_entry (pp, &all_pmu_pvt, list) {spin_lock (&pp->lock); i = pp->rb_put +1 ;if (i >=RB_SIZE )
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
Compile tested.
drivers/net/ppp_generic.c +6 -15
@@ -1213,8 +1213,7 @@ nch =0 ; hdrlen = (ppp->flags &SC_MP_XSHORTSEQ )?MPHDRLEN_SSN :MPHDRLEN ; - list = &ppp->channels; -while ((list = list->next) != &ppp->channels) { +list_for_each (list, &ppp->channels) { pch = list_entry(list, struct channel, clist); nch += pch->avail = (skb_queue_len (&pch->file.xq) ==0 );/*
@@ -1676,7 +1675,7 @@ ppp_receive_mp_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch) { u32 mask, seq; -struct list_head *l; +struct channel *ch;int mphdrlen = (ppp->flags &SC_MP_SHORTSEQ )?MPHDRLEN_SSN :MPHDRLEN ;if (!pskb_may_pull (skb, mphdrlen +1 ) || ppp->mrru ==0 )
@@ -1730,8 +1729,7 @@* The list of channels can't change because we have the receive * side of the ppp unit locked. */ -for (l = ppp->channels.next; l != &ppp->channels; l = l->next) { - struct channel *ch = list_entry(l, struct channel, clist); +list_for_each_entry (ch, &ppp->channels, clist) {if (seq_before (ch->lastseq, seq)) seq = ch->lastseq; }
@@ -2217,10 +2215,8 @@ find_comp_entry(int proto) {struct compressor_entry *ce; -struct list_head *list = &compressor_list; -while ((list = list->next) != &compressor_list) { - ce = list_entry(list, struct compressor_entry, list); +list_for_each_entry (ce, &compressor_list, list) {if (ce->comp->compress_proto == proto)return ce; }
@@ -2490,20 +2486,15 @@ ppp_find_channel(int unit) {struct channel *pch; -struct list_head *list; - list = &new_channels; -while ((list = list->next) != &new_channels) { - pch = list_entry(list, struct channel, list); +list_for_each_entry (pch, &new_channels, list) {if (pch->file.index == unit) {list_del (&pch->list);list_add (&pch->list, &all_channels);return pch; } } - list = &all_channels; -while ((list = list->next) != &all_channels) { - pch = list_entry(list, struct channel, list); +list_for_each_entry (pch, &all_channels, list) {if (pch->file.index == unit)return pch; }
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
Compile tested.
drivers/usb/class/audio.c +6 -15
@@ -1949,15 +1949,12 @@static int usb_audio_open_mixdev (struct inode *inode,struct file *file) {unsigned int minor =iminor (inode); -struct list_head *devs, *mdevs;struct usb_mixerdev *ms;struct usb_audio_state *s;down (&open_sem); -for (devs = audiodevs.next; devs != &audiodevs; devs = devs->next) { - s = list_entry(devs, struct usb_audio_state, audiodev); -for (mdevs = s->mixerlist.next; mdevs != &s->mixerlist; mdevs = mdevs->next) { - ms = list_entry(mdevs, struct usb_mixerdev, list); +list_for_each_entry (s, &audiodevs, audiodev) { +list_for_each_entry (ms, &s->mixerlist, list) {if (ms->dev_mixer == minor) goto mixer_found; }
@@ -2638,16 +2635,13 @@ {unsigned int minor =iminor (inode);DECLARE_WAITQUEUE (wait, current); -struct list_head *devs, *adevs;struct usb_audiodev *as;struct usb_audio_state *s;for (;;) {down (&open_sem); -for (devs = audiodevs.next; devs != &audiodevs; devs = devs->next) { - s = list_entry(devs, struct usb_audio_state, audiodev); -for (adevs = s->audiolist.next; adevs != &s->audiolist; adevs = adevs->next) { - as = list_entry(adevs, struct usb_audiodev, list); +list_for_each_entry (s, &audiodevs, audiodev) { +list_for_each_entry (as, &s->audiolist, list) {if (!((as->dev_audio ^ minor) & ~0xf )) goto device_found; }
@@ -3813,7 +3807,6 @@static void usb_audio_disconnect (struct usb_interface *intf) {struct usb_audio_state *s =usb_get_intfdata (intf); -struct list_head *list;struct usb_audiodev *as;struct usb_mixerdev *ms;
@@ -3835,8 +3828,7 @@usb_set_intfdata (intf,NULL );/* deregister all audio and mixer devices, so no new processes can open this device */ -for (list = s->audiolist.next; list != &s->audiolist; list = list->next) { - as = list_entry(list, struct usb_audiodev, list); +list_for_each_entry (as, &s->audiolist, list) {usbin_disc (as);usbout_disc (as);wake_up (&as->usbin.dma.wait);
@@ -3847,8 +3839,7 @@ } as->dev_audio =-1 ; } -for (list = s->mixerlist.next; list != &s->mixerlist; list = list->next) { - ms = list_entry(list, struct usb_mixerdev, list); +list_for_each_entry (ms, &s->mixerlist, list) {if (ms->dev_mixer >=0 ) {unregister_sound_mixer (ms->dev_mixer);printk (KERN_INFO "usbaudio: unregister mixer 14,%d\n" , ms->dev_mixer);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
Compile tested.
drivers/usb/class/usb-midi.c +3 -8
@@ -811,7 +811,6 @@ {int minor =iminor (inode);DECLARE_WAITQUEUE (wait, current); -struct list_head *devs, *mdevs;struct usb_midi_state *s;struct usb_mididev *m;unsigned long flags;
@@ -823,10 +822,8 @@for (;;) {down (&open_sem); -for (devs = mididevs.next; devs != &mididevs; devs = devs->next) { - s = list_entry(devs, struct usb_midi_state, mididev); -for (mdevs = s->midiDevList.next; mdevs != &s->midiDevList; mdevs = mdevs->next) { - m = list_entry(mdevs, struct usb_mididev, list); +list_for_each_entry (s, &mididevs, mididev) { +list_for_each_entry (m, &s->midiDevList, list) {if ( !((m->dev_midi ^ minor) & ~0xf ) ) goto device_found; }
@@ -2000,7 +1997,6 @@static void usb_midi_disconnect (struct usb_interface *intf) {struct usb_midi_state *s =usb_get_intfdata (intf); -struct list_head *list;struct usb_mididev *m;if ( !s )
@@ -2018,8 +2014,7 @@ s->usbdev =NULL ;usb_set_intfdata (intf,NULL ); -for ( list = s->midiDevList.next; list != &s->midiDevList; list = list->next ) { - m = list_entry(list, struct usb_mididev, list); +list_for_each_entry (m, &s->midiDevList, list) {wake_up (&(m->min.ep->wait));wake_up (&(m->mout.ep->wait));if ( m->dev_midi >=0 ) {
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
Compile tested.
drivers/usb/core/devices.c +2 -6
@@ -570,7 +570,6 @@static ssize_t usb_device_read (struct file *file,char __user *buf,size_t nbytes,loff_t *ppos) { -struct list_head *buslist;struct usb_bus *bus;ssize_t ret, total_written =0 ;loff_t skip_bytes = *ppos;
@@ -582,12 +581,9 @@if (!access_ok (VERIFY_WRITE , buf, nbytes))return -EFAULT ; -/* enumerate busses */ down (&usb_bus_list_lock); -for (buslist = usb_bus_list.next; buslist != &usb_bus_list; buslist = buslist->next) { -/* print devices for this bus */ - bus = list_entry(buslist, struct usb_bus, bus_list); - +/* print devices for all busses */ +list_for_each_entry (bus, &usb_bus_list, bus_list) {/* recurse through all children of the root hub */ if (!bus->root_hub)continue ;
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry_safe. (Is this a non i386? I can't compile it.)
drivers/usb/host/hc_sl811.c +2 -6
@@ -1343,15 +1343,11 @@*****************************************************************/ static void __exit hci_hcd_cleanup (void) { -struct list_head *hci_l; -hci_t *hci; +hci_t *hci, *tmp;DBGFUNC ("Enter hci_hcd_cleanup\n" ); -for (hci_l = hci_hcd_list.next; hci_l != &hci_hcd_list;) { - hci =list_entry (hci_l, hci_t, hci_hcd_list); - hci_l = hci_l->next; +list_for_each_entry_safe (hci, tmp, &hci_hcd_list, hci_hcd_list)hc_release_hci (hci); - } }module_init (hci_hcd_init);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
Compile tested.
drivers/usb/host/uhci-hcd.c +37 -135
@@ -330,7 +330,7 @@static void uhci_insert_qh (struct uhci_hcd *uhci,struct uhci_qh *skelqh,struct urb *urb) {struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv; -struct list_head *tmp; +struct urb_priv *turbp;struct uhci_qh *lqh;/* Grab the last QH */
@@ -358,12 +358,8 @@*/ lqh->link =cpu_to_le32 (urbp->qh->dma_handle) |UHCI_PTR_QH ;if (lqh->urbp) { - list_for_each (tmp, &lqh->urbp->queue_list) { -struct urb_priv *turbp = - list_entry(tmp, struct urb_priv, queue_list); - +list_for_each_entry (turbp, &lqh->urbp->queue_list, queue_list) turbp->qh->link = lqh->link; - } }list_add_tail (&urbp->qh->list, &skelqh->list);
@@ -405,18 +401,11 @@ pqh = list_entry(qh->list.prev, struct uhci_qh, list); pqh->link = newlink;if (pqh->urbp) { -struct list_head *head, *tmp; - - head = &pqh->urbp->queue_list; - tmp = head->next; -while (head != tmp) { -struct urb_priv *turbp = - list_entry(tmp, struct urb_priv, queue_list); - - tmp = tmp->next; +struct urb_priv *turbp; +list_for_each_entry (turbp, &pqh->urbp->queue_list, + queue_list) turbp->qh->link = newlink; - } }wmb ();
@@ -447,21 +436,14 @@static int uhci_fixup_toggle (struct urb *urb,unsigned int toggle) {struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv; -struct list_head *head, *tmp; - - head = &urbp->td_list; - tmp = head->next; -while (head != tmp) { - struct uhci_td *td = list_entry(tmp, struct uhci_td, list); - - tmp = tmp->next; +struct uhci_td *td; +list_for_each_entry (td, &urbp->td_list, list) {if (toggle) td->token |=cpu_to_le32 (TD_TOKEN_TOGGLE );else td->token &= ~cpu_to_le32 (TD_TOKEN_TOGGLE ); - toggle ^=1 ; }
@@ -481,17 +463,12 @@/* Find the first URB in the queue */ if (eurbp->queued) { -struct list_head *head = &eurbp->queue_list; - - tmp = head->next; -while (tmp != head) { +list_for_each (tmp, &eurbp->queue_list) {struct urb_priv *turbp = list_entry(tmp, struct urb_priv, queue_list);if (!turbp->queued)break ; - - tmp = tmp->next; } }else tmp = &eurbp->queue_list;
@@ -522,9 +499,7 @@static void uhci_delete_queued_urb (struct uhci_hcd *uhci,struct urb *urb) { -struct urb_priv *urbp, *nurbp; -struct list_head *head, *tmp; -struct urb_priv *purbp; +struct urb_priv *urbp, *nurbp, *purbp, *turbp;struct uhci_td *pltd;unsigned int toggle;
@@ -556,14 +531,7 @@ toggle =uhci_toggle (td_token (pltd)) ^1 ; } - head = &urbp->queue_list; - tmp = head->next; -while (head != tmp) { -struct urb_priv *turbp; - - turbp = list_entry(tmp, struct urb_priv, queue_list); - tmp = tmp->next; - +list_for_each_entry (turbp, &urbp->queue_list, queue_list) {if (!turbp->queued)break ; toggle =uhci_fixup_toggle (turbp->urb, toggle);
@@ -637,7 +605,7 @@static void uhci_destroy_urb_priv (struct uhci_hcd *uhci,struct urb *urb) { -struct list_head *head, *tmp; +struct uhci_td *td, *tmp;struct urb_priv *urbp;unsigned int age;
@@ -660,13 +628,7 @@if (list_empty (&uhci->td_remove_list))uhci_set_next_interrupt (uhci); - head = &urbp->td_list; - tmp = head->next; -while (tmp != head) { - struct uhci_td *td = list_entry(tmp, struct uhci_td, list); - - tmp = tmp->next; - +list_for_each_entry_safe (td, tmp, &urbp->td_list, list) {uhci_remove_td_from_urb (td);uhci_remove_td (uhci, td);list_add (&td->remove_list, &uhci->td_remove_list);
@@ -1083,21 +1045,14 @@*/ static int uhci_result_common (struct uhci_hcd *uhci,struct urb *urb) { -struct list_head *tmp, *head;struct urb_priv *urbp = urb->hcpriv; -struct uhci_td *td; +struct uhci_td *td, *tmp;unsigned int status =0 ;int ret =0 ; urb->actual_length =0 ; - head = &urbp->td_list; - tmp = head->next; -while (tmp != head) { - td = list_entry(tmp, struct uhci_td, list); - - tmp = tmp->next; - +list_for_each_entry_safe (td, tmp, &urbp->td_list, list) { status =uhci_status_bits (td_status (td));if (status &TD_CTRL_ACTIVE )return -EINPROGRESS ;
@@ -1180,17 +1135,12 @@static int isochronous_find_limits (struct uhci_hcd *uhci,struct urb *urb,unsigned int *start,unsigned int *end) {struct urb *last_urb =NULL ; -struct list_head *tmp, *head; +struct urb_priv *up;int ret =0 ; - head = &uhci->urb_list; - tmp = head->next; -while (tmp != head) { - struct urb_priv *up = list_entry(tmp, struct urb_priv, urb_list); +list_for_each_entry (up, &uhci->urb_list, urb_list) {struct urb *u = up->urb; - tmp = tmp->next; -/* look for pending URB's with identical pipe handle */ if ((urb->pipe == u->pipe) && (urb->dev == u->dev) && (u->status == -EINPROGRESS ) && (u != urb)) {
@@ -1276,7 +1226,7 @@static int uhci_result_isochronous (struct uhci_hcd *uhci,struct urb *urb) { -struct list_head *tmp, *head; +struct uhci_td *td, *tmp;struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv;int status;int i, ret =0 ;
@@ -1284,14 +1234,9 @@ urb->actual_length =0 ; i =0 ; - head = &urbp->td_list; - tmp = head->next; -while (tmp != head) { - struct uhci_td *td = list_entry(tmp, struct uhci_td, list); +list_for_each_entry_safe (td, tmp, &urbp->td_list, list) {int actlength; - tmp = tmp->next; -if (td_status (td) &TD_CTRL_ACTIVE )return -EINPROGRESS ;
@@ -1315,20 +1260,15 @@static struct urb *uhci_find_urb_ep (struct uhci_hcd *uhci,struct urb *urb) { -struct list_head *tmp, *head; +struct urb_priv *up, *tmp;/* We don't match Isoc transfers since they are special */ if (usb_pipeisoc (urb->pipe))return NULL ; - head = &uhci->urb_list; - tmp = head->next; -while (tmp != head) { - struct urb_priv *up = list_entry(tmp, struct urb_priv, urb_list); +list_for_each_entry_safe (up, tmp, &uhci->urb_list, urb_list) {struct urb *u = up->urb; - tmp = tmp->next; -if (u->dev == urb->dev && u->status == -EINPROGRESS ) {/* For control, ignore the direction */ if (usb_pipecontrol(urb->pipe) &&
@@ -1478,7 +1418,7 @@static void uhci_unlink_generic (struct uhci_hcd *uhci,struct urb *urb) { -struct list_head *head, *tmp; +struct list_head *head, *tmp, *next;struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv;int prevactive =1 ;
@@ -1498,15 +1438,12 @@* for all types */ head = &urbp->td_list; - tmp = head->next; -while (tmp != head) { +list_for_each_safe (tmp, next, head) { struct uhci_td *td = list_entry(tmp, struct uhci_td, list); - tmp = tmp->next; -if (!(td_status (td) &TD_CTRL_ACTIVE ) && (uhci_actual_length (td_status (td)) <uhci_expected_length (td_token (td)) || - tmp == head)) + next == head))usb_settoggle (urb->dev,uhci_endpoint (td_token (td)),uhci_packetout (td_token (td)),uhci_toggle (td_token (td)) ^1 );
@@ -1573,18 +1510,15 @@*/ head = &urbp->td_list; - tmp = head->next; -while (tmp != head) { +list_for_each (tmp, head) { struct uhci_td *td = list_entry(tmp, struct uhci_td, list); - tmp = tmp->next; -/* * Make sure we don't do the last one (since it'll have the * TERM bit set) as well as we skip every so many TD's to * make sure it doesn't hog the bandwidth */ -if (tmp != head && (count %DEPTH_INTERVAL ) == (DEPTH_INTERVAL -1 )) +if (tmp->next != head && (count %DEPTH_INTERVAL ) == (DEPTH_INTERVAL -1 )) td->link |=UHCI_PTR_DEPTH ; count++;
@@ -1609,7 +1543,8 @@ {struct usb_hcd *hcd = (struct usb_hcd *)ptr;struct uhci_hcd *uhci =hcd_to_uhci (hcd); -struct list_head list, *tmp, *head; +struct urb_priv *up, *tmp; +struct list_head list;unsigned long flags;int called_uhci_finish_completion =0 ;
@@ -1623,14 +1558,9 @@ called_uhci_finish_completion =1 ; } - head = &uhci->urb_list; - tmp = head->next; -while (tmp != head) { - struct urb_priv *up = list_entry(tmp, struct urb_priv, urb_list); +list_for_each_entry_safe (up, tmp, &uhci->urb_list, urb_list) {struct urb *u = up->urb; - tmp = tmp->next; -spin_lock (&u->lock);/* Check if the FSBR timed out */
@@ -1652,14 +1582,9 @@if (called_uhci_finish_completion)wake_up_all (&uhci->waitqh); - head = &list; - tmp = head->next; -while (tmp != head) { - struct urb_priv *up = list_entry(tmp, struct urb_priv, urb_list); +list_for_each_entry_safe (up, tmp, &list, urb_list) {struct urb *u = up->urb; - tmp = tmp->next; -uhci_urb_dequeue (hcd, u); }
@@ -1690,15 +1615,9 @@static void uhci_free_pending_qhs (struct uhci_hcd *uhci) { -struct list_head *tmp, *head; - - head = &uhci->qh_remove_list; - tmp = head->next; -while (tmp != head) { - struct uhci_qh *qh = list_entry(tmp, struct uhci_qh, remove_list); - - tmp = tmp->next; +struct uhci_qh *qh, *tmp; +list_for_each_entry_safe (qh, tmp, &uhci->qh_remove_list, remove_list) {list_del_init (&qh->remove_list);uhci_free_qh (uhci, qh);
@@ -1707,15 +1626,9 @@static void uhci_free_pending_tds (struct uhci_hcd *uhci) { -struct list_head *tmp, *head; - - head = &uhci->td_remove_list; - tmp = head->next; -while (tmp != head) { - struct uhci_td *td = list_entry(tmp, struct uhci_td, remove_list); - - tmp = tmp->next; +struct uhci_td *td, *tmp; +list_for_each_entry_safe (td, tmp, &uhci->td_remove_list, remove_list) {list_del_init (&td->remove_list);uhci_free_td (uhci, td);
@@ -1736,19 +1649,13 @@static void uhci_finish_completion (struct usb_hcd *hcd,struct pt_regs *regs) {struct uhci_hcd *uhci =hcd_to_uhci (hcd); -struct list_head *tmp, *head; +struct urb_priv *urbp, *tmp; - head = &uhci->complete_list; - tmp = head->next; -while (tmp != head) { - struct urb_priv *urbp = list_entry(tmp, struct urb_priv, urb_list); +list_for_each_entry_safe (urbp, tmp, &uhci->complete_list, urb_list) {struct urb *urb = urbp->urb;list_del_init (&urbp->urb_list);uhci_finish_urb (hcd, urb, regs); - - head = &uhci->complete_list; - tmp = head->next; } }
@@ -1764,7 +1671,7 @@struct uhci_hcd *uhci =hcd_to_uhci (hcd);unsigned long io_addr = uhci->io_addr;unsigned short status; -struct list_head *tmp, *head; +struct urb_priv *urbp;unsigned int age;/*
@@ -1812,13 +1719,8 @@uhci_set_next_interrupt (uhci);/* Walk the list of pending URB's to see which ones completed */ - head = &uhci->urb_list; - tmp = head->next; -while (tmp != head) { - struct urb_priv *urbp = list_entry(tmp, struct urb_priv, urb_list); +list_for_each_entry (urbp, &uhci->urb_list, urb_list) {struct urb *urb = urbp->urb; - - tmp = tmp->next;/* Checks the status and does all of the magic necessary */ uhci_transfer_result (uhci, urb);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerUse list_for_each_entry to make code more readable. Compile tested.
drivers/usb/media/dabusb.c +1 -4
@@ -109,16 +109,13 @@static int dabusb_cancel_queue (pdabusb_t s,struct list_head *q) {unsigned long flags; -struct list_head *p;pbuff_t b;dbg ("dabusb_cancel_queue" );spin_lock_irqsave (&s->lock, flags); -for (p = q->next; p != q; p = p->next) { - b =list_entry (p, buff_t, buff_list); - +list_for_each_entry (b, q, buff_list) {#ifdef DEBUG dump_urb (b->purb);#endif
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerUse list_for_each_entry_safe to make code more readable. Compile tested.
drivers/usb/serial/ipaq.c +5 -14
@@ -417,9 +417,8 @@struct ipaq_private *priv =usb_get_serial_port_data (port);struct usb_serial *serial = port->serial;int count, room; -struct ipaq_packet *pkt; +struct ipaq_packet *pkt, *tmp;struct urb *urb = port->write_urb; -struct list_head *tmp;if (urb->status == -EINPROGRESS ) {/* Should never happen */
@@ -427,9 +426,7 @@return ; } room =URBDATA_SIZE ; -for (tmp = priv->queue.next; tmp != &priv->queue;) { - pkt = list_entry(tmp, struct ipaq_packet, list); - tmp = tmp->next; +list_for_each_entry_safe (pkt, tmp, &priv->queue, list) { count =min (room, (int )(pkt->len - pkt->written));memcpy (urb->transfer_buffer + (URBDATA_SIZE - room), pkt->data + pkt->written, count);
@@ -501,22 +498,16 @@static void ipaq_destroy_lists (struct usb_serial_port *port) {struct ipaq_private *priv =usb_get_serial_port_data (port); -struct list_head *tmp; -struct ipaq_packet *pkt; +struct ipaq_packet *pkt, *tmp; -for (tmp = priv->queue.next; tmp != &priv->queue;) { - pkt = list_entry(tmp, struct ipaq_packet, list); - tmp = tmp->next; +list_for_each_entry_safe (pkt, tmp, &priv->queue, list) {kfree (pkt->data);kfree (pkt); } -for (tmp = priv->freelist.next; tmp != &priv->freelist;) { - pkt = list_entry(tmp, struct ipaq_packet, list); - tmp = tmp->next; +list_for_each_entry_safe (pkt, tmp, &priv->freelist, list) {kfree (pkt->data);kfree (pkt); } -return ; }
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerUse list_for_each_entry_safe to make code more readable. Compile tested.
fs/coda/psdev.c +2 -4
@@ -310,8 +310,7 @@static int coda_psdev_release (struct inode * inode,struct file * file) {struct venus_comm *vcp = (struct venus_comm *) file->private_data; -struct upc_req *req; -struct list_head *lh, *next; +struct upc_req *req, *tmp;lock_kernel ();if ( !vcp->vc_inuse ) {
@@ -326,8 +325,7 @@ }/* Wakeup clients so they can return. */ -list_for_each_safe (lh, next, &vcp->vc_pending) { - req = list_entry(lh, struct upc_req, uc_chain); +list_for_each_entry_safe (req, tmp, &vcp->vc_pending, uc_chain) {/* Async requests need to be freed here */ if (req->uc_flags &REQ_ASYNC ) {CODA_FREE (req->uc_data,sizeof (struct coda_in_hdr ));
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry: fs-dquot.c
In reply to Domen PuncerMake code more readable with list_for_each_entry_safe. (Didn't compile before, doesn't compile now)
fs/dquot.c +2 -5
@@ -406,13 +406,10 @@* for this sb+type at all. */ static void invalidate_dquots (struct super_block *sb,int type) { -struct dquot *dquot; -struct list_head *head; +struct dquot *dquot, *tmp;spin_lock (&dq_list_lock); -for (head = inuse_list.next; head != &inuse_list;) { - dquot = list_entry(head, struct dquot, dq_inuse); - head = head->next; +list_for_each_entry_safe (dquot, tmp, &inuse_list, dq_inuse) {if (dquot->dq_sb != sb)continue ;if (dquot->dq_type != type)
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerUse list_for_each_entry to make code more readable. Compile tested.
fs/jffs/intrep.c +9 -13
@@ -1619,12 +1619,10 @@ {struct jffs_file *f;int i = ino % c->hash_len; -struct list_head *tmp;D3 (printk ("jffs_find_file(): ino: %u\n" , ino)); -for (tmp = c->hash[i].next; tmp != &c->hash[i]; tmp = tmp->next) { - f = list_entry(tmp, struct jffs_file, hash); +list_for_each_entry (f, &c->hash[i], hash) {if (ino != f->ino)continue ; D3(printk("jffs_find_file(): Found file with ino "
@@ -2020,13 +2018,12 @@int result =0 ;for (pos =0 ; pos < c->hash_len; pos++) { -struct list_head *p, *next; -for (p = c->hash[pos].next; p != &c->hash[pos]; p = next) { -/* We need a reference to the next file in the -list because `func' might remove the current -file `f'. */ - next = p->next; - r = func(list_entry(p, struct jffs_file, hash)); +struct jffs_file *f, *next; + +/* We must do _safe, because 'func' might remove the +current file 'f' from the list. */ +list_for_each_entry_safe (f, next, &c->hash[pos], hash) { + r =func (f);if (r <0 )return r; result += r;
@@ -2589,9 +2586,8 @@printk ("JFFS: Dumping the file system's hash table...\n" );for (i =0 ; i < c->hash_len; i++) { -struct list_head *p; -for (p = c->hash[i].next; p != &c->hash[i]; p = p->next) { - struct jffs_file *f=list_entry(p,struct jffs_file,hash); +struct jffs_file *f; +list_for_each_entry (f, &c->hash[i], hash) { printk("*** c->hash[%u]: \"%s\" " "(ino: %u, pino: %u)\n", i, (f->name ? f->name : ""),
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerMake code more readable with list_for_each_entry.
Compile tested.
fs/namespace.c +1 -3
@@ -536,7 +536,6 @@static struct vfsmount *copy_tree (struct vfsmount *mnt,struct dentry *dentry) {struct vfsmount *res, *p, *q, *r, *s; -struct list_head *h;struct nameidata nd; res = q =clone_mnt (mnt, dentry);
@@ -545,8 +544,7 @@ q->mnt_mountpoint = mnt->mnt_mountpoint; p = mnt; -for (h = mnt->mnt_mounts.next; h != &mnt->mnt_mounts; h = h->next) { - r = list_entry(h, struct vfsmount, mnt_child); +list_for_each_entry (r, &mnt->mnt_mounts, mnt_child) {if (!lives_below_in_same_fs (r->mnt_mountpoint, dentry))continue ;
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 list_for_each_entry:
In reply to Domen PuncerUse list_for_each_entry_reverse to make code more readable Compile tested.
sound/core/memory.c +2 -7
@@ -64,25 +64,20 @@void snd_memory_done (void ) { -struct list_head *head;struct snd_alloc_track *t;if (snd_alloc_kmalloc >0 )snd_printk (KERN_ERR "Not freed snd_alloc_kmalloc = %li\n" , snd_alloc_kmalloc);if (snd_alloc_vmalloc >0 )snd_printk (KERN_ERR "Not freed snd_alloc_vmalloc = %li\n" , snd_alloc_vmalloc); -for (head = snd_alloc_kmalloc_list.prev; - head != &snd_alloc_kmalloc_list; head = head->prev) { - t = list_entry(head, struct snd_alloc_track, list); +list_for_each_entry_reverse (t, &snd_alloc_kmalloc_list, list) {if (t->magic !=KMALLOC_MAGIC ) {snd_printk (KERN_ERR "Corrupted kmalloc\n" );break ; }snd_printk (KERN_ERR "kmalloc(%ld) from %p not freed\n" , (long ) t->size, t->caller); } -for (head = snd_alloc_vmalloc_list.prev; - head != &snd_alloc_vmalloc_list; head = head->prev) { - t = list_entry(head, struct snd_alloc_track, list); +list_for_each_entry_reverse (t, &snd_alloc_vmalloc_list, list) {if (t->magic !=VMALLOC_MAGIC ) {snd_printk (KERN_ERR "Corrupted vmalloc\n" );break ;
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors