workaround possibly false positive uses of memory after it is freed
[oweals/ubus.git] / libubus-req.c
index 97785a1e24cdd234ab788cda8b82ff305302be45..fd9a548839e45ae0180f7bf09129bcdd6f9f845b 100644 (file)
@@ -40,11 +40,9 @@ static void req_data_cb(struct ubus_request *req, int type, struct blob_attr *da
 
 static void __ubus_process_req_data(struct ubus_request *req)
 {
-       struct ubus_pending_data *data;
+       struct ubus_pending_data *data, *tmp;
 
-       while (!list_empty(&req->pending)) {
-               data = list_first_entry(&req->pending,
-                       struct ubus_pending_data, list);
+       list_for_each_entry_safe(data, tmp, &req->pending, list) {
                list_del(&data->list);
                if (!req->cancelled)
                        req_data_cb(req, data->type, data->data);