| .. | .. |
|---|
| 104 | 104 | spin_lock_irqsave(&q->lock, flags); |
|---|
| 105 | 105 | head = &q->zcookie_head; |
|---|
| 106 | 106 | if (!list_empty(head)) { |
|---|
| 107 | | - info = list_entry(head, struct rds_msg_zcopy_info, |
|---|
| 108 | | - rs_zcookie_next); |
|---|
| 109 | | - if (info && rds_zcookie_add(info, cookie)) { |
|---|
| 107 | + info = list_first_entry(head, struct rds_msg_zcopy_info, |
|---|
| 108 | + rs_zcookie_next); |
|---|
| 109 | + if (rds_zcookie_add(info, cookie)) { |
|---|
| 110 | 110 | spin_unlock_irqrestore(&q->lock, flags); |
|---|
| 111 | 111 | kfree(rds_info_from_znotifier(znotif)); |
|---|
| 112 | 112 | /* caller invokes rds_wake_sk_sleep() */ |
|---|
| .. | .. |
|---|
| 118 | 118 | ck = &info->zcookies; |
|---|
| 119 | 119 | memset(ck, 0, sizeof(*ck)); |
|---|
| 120 | 120 | WARN_ON(!rds_zcookie_add(info, cookie)); |
|---|
| 121 | | - list_add_tail(&q->zcookie_head, &info->rs_zcookie_next); |
|---|
| 121 | + list_add_tail(&info->rs_zcookie_next, &q->zcookie_head); |
|---|
| 122 | 122 | |
|---|
| 123 | 123 | spin_unlock_irqrestore(&q->lock, flags); |
|---|
| 124 | 124 | /* caller invokes rds_wake_sk_sleep() */ |
|---|