OSDN Git Service

staging: lustre: fix to use list_for_each_entry_safe() when delete items
authorWei Yongjun <yongjun_wei@trendmicro.com.cn>
Fri, 17 May 2013 08:27:05 +0000 (16:27 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2013 22:05:07 +0000 (15:05 -0700)
Since we will remove items off the list using list_del_init() we need
to use a safe version of the list_for_each_entry() macro aptly named
list_for_each_entry_safe().

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/osc/osc_cache.c

index 206fead..2df2810 100644 (file)
@@ -2620,7 +2620,7 @@ int osc_queue_sync_pages(const struct lu_env *env, struct osc_object *obj,
 {
        struct client_obd     *cli = osc_cli(obj);
        struct osc_extent     *ext;
-       struct osc_async_page *oap;
+       struct osc_async_page *oap, *tmp;
        int     page_count = 0;
        int     mppr       = cli->cl_max_pages_per_rpc;
        pgoff_t start      = CL_PAGE_EOF;
@@ -2639,7 +2639,7 @@ int osc_queue_sync_pages(const struct lu_env *env, struct osc_object *obj,
 
        ext = osc_extent_alloc(obj);
        if (ext == NULL) {
-               list_for_each_entry(oap, list, oap_pending_item) {
+               list_for_each_entry_safe(oap, tmp, list, oap_pending_item) {
                        list_del_init(&oap->oap_pending_item);
                        osc_ap_completion(env, cli, oap, 0, -ENOMEM);
                }