Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

f2fs: don't set cached_en if it will be freed

If en has empty list pointer, it will be freed sooner, so we don't need to
set cached_en with it.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

+7 -5
+7 -5
fs/f2fs/extent_cache.c
··· 243 243 if (en) { 244 244 *ei = en->ei; 245 245 spin_lock(&sbi->extent_lock); 246 - if (!list_empty(&en->list)) 246 + if (!list_empty(&en->list)) { 247 247 list_move_tail(&en->list, &sbi->extent_list); 248 - et->cached_en = en; 248 + et->cached_en = en; 249 + } 249 250 spin_unlock(&sbi->extent_lock); 250 251 ret = true; 251 252 } ··· 365 364 return NULL; 366 365 367 366 __try_update_largest_extent(et, en); 368 - et->cached_en = en; 369 367 370 368 spin_lock(&sbi->extent_lock); 371 - if (!list_empty(&en->list)) 369 + if (!list_empty(&en->list)) { 372 370 list_move_tail(&en->list, &sbi->extent_list); 371 + et->cached_en = en; 372 + } 373 373 spin_unlock(&sbi->extent_lock); 374 374 return en; 375 375 } ··· 407 405 return NULL; 408 406 409 407 __try_update_largest_extent(et, en); 410 - et->cached_en = en; 411 408 412 409 /* update in global extent list */ 413 410 spin_lock(&sbi->extent_lock); 414 411 list_add_tail(&en->list, &sbi->extent_list); 412 + et->cached_en = en; 415 413 spin_unlock(&sbi->extent_lock); 416 414 return en; 417 415 }