All of lore.kernel.org
 help / color / mirror / Atom feed
* re: ceph: set i_head_snapc when getting CEPH_CAP_FILE_WR reference
@ 2016-06-15 12:44 Dan Carpenter
  2016-06-15 12:54 ` Yan, Zheng
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2016-06-15 12:44 UTC (permalink / raw)
  To: zyan; +Cc: ceph-devel

Hello Yan, Zheng,

The patch 5dda377cf0a6: "ceph: set i_head_snapc when getting
CEPH_CAP_FILE_WR reference" from Apr 30, 2015, leads to the following
static checker warning:

	fs/ceph/snap.c:557 ceph_queue_cap_snap()
	error: potential NULL dereference 'old_snapc'.

fs/ceph/snap.c
   547          /* dirty page count moved from _head to this cap_snap;
   548             all subsequent writes page dirties occur _after_ this
   549             snapshot. */
   550          capsnap->dirty_pages = ci->i_wrbuffer_ref_head;
   551          ci->i_wrbuffer_ref_head = 0;
   552          capsnap->context = old_snapc;
   553          list_add_tail(&capsnap->ci_item, &ci->i_cap_snaps);
   554          old_snapc = NULL;
                ^^^^^^^^^^^^^^^^^
   555  
   556          if (used & CEPH_CAP_FILE_WR) {
   557                  dout("queue_cap_snap %p cap_snap %p snapc %p"
   558                       " seq %llu used WR, now pending\n", inode,
   559                       capsnap, old_snapc, old_snapc->seq);
                                                 ^^^^^^^^^^^^^^
This is a NULL deref.

   560                  capsnap->writing = 1;
   561          } else {
   562                  /* note mtime, size NOW. */
   563                  __ceph_finish_cap_snap(ci, capsnap);
   564          }
   565          capsnap = NULL;

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-06-15 12:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-15 12:44 ceph: set i_head_snapc when getting CEPH_CAP_FILE_WR reference Dan Carpenter
2016-06-15 12:54 ` Yan, Zheng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.