[Cbe-oss-dev] [patch] ps3disk: passing wrong variable to bvec_kunmap_irq()
Jens Axboe
jaxboe at fusionio.com
Sun Oct 17 17:49:29 EST 2010
On 2010-10-16 21:39, Geert Uytterhoeven wrote:
> On Mon, Oct 11, 2010 at 21:42, Jens Axboe <jaxboe at fusionio.com> wrote:
>> On 2010-10-11 21:13, Dan Carpenter wrote:
>>> This should pass "buf" to bvec_kunmap_irq() instead of "bv". The api is
>>> like kmap_atomic() instead of kmap().
>>>
>>> Signed-off-by: Dan Carpenter <error27 at gmail.com>
>>>
>>> diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c
>>> index e9da874..03688c2 100644
>>> --- a/drivers/block/ps3disk.c
>>> +++ b/drivers/block/ps3disk.c
>>> @@ -113,7 +113,7 @@ static void ps3disk_scatter_gather(struct ps3_storage_device *dev,
>>> memcpy(buf, dev->bounce_buf+offset, size);
>>> offset += size;
>>> flush_kernel_dcache_page(bvec->bv_page);
>>> - bvec_kunmap_irq(bvec, &flags);
>>> + bvec_kunmap_irq(buf, &flags);
>>> i++;
>>> }
>>> }
>>
>> Thanks applied, that bug is all too common.
>
> Because bvec_kunmap_irq() is a macro if !CONFIG_HIGHMEM, and thus there's no
> argument type checking on e.g. pp64, which doesn't support HIGHMEM?
It's a generic problem, not isolated to this case. The problem is that
the API isn't symmetric, and the unmap parts take a void * pointer.
--
Jens Axboe
More information about the cbe-oss-dev
mailing list