소스 검색

[DLM] move kmap to after spin_unlock

Doing the kmap() while holding the spinlock was causing recursive spinlock
problems.  It seems the kmap was scheduling, although there was no warning
as I'd expect.  Patrick, do we need locking around the kmap?

Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
David Teigland 19 년 전
부모
커밋
fcc8abc8d4
1개의 변경된 파일1개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      fs/dlm/lowcomms.c

+ 1 - 1
fs/dlm/lowcomms.c

@@ -934,11 +934,11 @@ static int send_to_sock(struct nodeinfo *ni)
 			break;
 		e = list_entry(ni->writequeue.next, struct writequeue_entry,
 			       list);
-		kmap(e->page);
 		len = e->len;
 		offset = e->offset;
 		BUG_ON(len == 0 && e->users == 0);
 		spin_unlock(&ni->writequeue_lock);
+		kmap(e->page);
 
 		ret = 0;
 		if (len) {