diff --git a/les/peer.go b/les/peer.go
index ff298319595ce5f71fe6c4c90c88a94495c7949d..d308fd249efbd2871c914d9ddbf0990a0f899704 100644
--- a/les/peer.go
+++ b/les/peer.go
@@ -531,8 +531,6 @@ func (p *serverPeer) getTxRelayCost(amount, size int) uint64 {
 // HasBlock checks if the peer has a given block
 func (p *serverPeer) HasBlock(hash common.Hash, number uint64, hasState bool) bool {
 	p.lock.RLock()
-	defer p.lock.RUnlock()
-
 	head := p.headInfo.Number
 	var since, recent uint64
 	if hasState {
@@ -543,6 +541,7 @@ func (p *serverPeer) HasBlock(hash common.Hash, number uint64, hasState bool) bo
 		recent = p.chainRecent
 	}
 	hasBlock := p.hasBlock
+	p.lock.RUnlock()
 
 	return head >= number && number >= since && (recent == 0 || number+recent+4 > head) && hasBlock != nil && hasBlock(hash, number, hasState)
 }