From 88da300ff249dcc8b14dd783a7cb21a2d11685f6 Mon Sep 17 00:00:00 2001 From: Jack Steiner Date: Tue, 15 Dec 2009 16:48:10 -0800 Subject: [PATCH] --- yaml --- r: 176735 b: refs/heads/master c: e006043a4d2da52bba9fd9cb7e5a22e2951ff69b h: refs/heads/master i: 176733: 83710f41fcc6effa9088b44d2fc1123c07cada32 176731: 62a6efe51c79983c96edc67e87dda09fec5a0b3d 176727: 351ef74607cc55850bad10ff9c17c4baf27096b0 176719: 5946c5a13247006e7ec5e6c01ccb95d12ce44add 176703: 213bff6f7d5c4aff0146aa1d7470a29f0ccd8d9d v: v3 --- [refs] | 2 +- trunk/drivers/misc/sgi-gru/grufault.c | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index ffee839a6326..abbe10faa41e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 33f3648342dc40f8bd6383a5a1a91c22e06f6b77 +refs/heads/master: e006043a4d2da52bba9fd9cb7e5a22e2951ff69b diff --git a/trunk/drivers/misc/sgi-gru/grufault.c b/trunk/drivers/misc/sgi-gru/grufault.c index ada7df7e0968..7466234450f3 100644 --- a/trunk/drivers/misc/sgi-gru/grufault.c +++ b/trunk/drivers/misc/sgi-gru/grufault.c @@ -90,19 +90,22 @@ static struct gru_thread_state *gru_alloc_locked_gts(unsigned long vaddr) { struct mm_struct *mm = current->mm; struct vm_area_struct *vma; - struct gru_thread_state *gts = NULL; + struct gru_thread_state *gts = ERR_PTR(-EINVAL); down_write(&mm->mmap_sem); vma = gru_find_vma(vaddr); - if (vma) - gts = gru_alloc_thread_state(vma, TSID(vaddr, vma)); - if (!IS_ERR(gts)) { - mutex_lock(>s->ts_ctxlock); - downgrade_write(&mm->mmap_sem); - } else { - up_write(&mm->mmap_sem); - } + if (!vma) + goto err; + + gts = gru_alloc_thread_state(vma, TSID(vaddr, vma)); + if (IS_ERR(gts)) + goto err; + mutex_lock(>s->ts_ctxlock); + downgrade_write(&mm->mmap_sem); + return gts; +err: + up_write(&mm->mmap_sem); return gts; }