+ struct list_head *prev = cur->prev;
+ struct list_head *next = cur->next;
+ if ((u8*)prev >= (u8*)dentry->ads_entries
+ && (u8*)prev < (u8*)(dentry->ads_entries + dentry->num_ads)) {
+ /* Previous entry was located in the same ads_entries
+ * array! Adjust our own prev pointer. */
+ u16 idx = (struct ads_entry*)prev -
+ (struct ads_entry*)&dentry->ads_entries[0].lte_group_list.list;
+ cur->prev = &ads_entries[idx].lte_group_list.list;
+ } else {
+ /* Previous entry is located in a different ads_entries
+ * array. Adjust its next pointer. */
+ prev->next = cur;
+ }
+ next = cur->next;
+ if ((u8*)next >= (u8*)dentry->ads_entries
+ && (u8*)next < (u8*)(dentry->ads_entries + dentry->num_ads)) {
+ /* Next entry was located in the same ads_entries array!
+ * Adjust our own next pointer. */
+ u16 idx = (struct ads_entry*)next -
+ (struct ads_entry*)&dentry->ads_entries[0].lte_group_list.list;
+ cur->next = &ads_entries[idx].lte_group_list.list;
+ } else {
+ /* Next entry is located in a different ads_entries
+ * array. Adjust its prev pointer. */
+ next->prev = cur;
+ }