--- x/drivers/dma-buf/udmabuf.c +++ y/drivers/dma-buf/udmabuf.c @@ -153,7 +153,12 @@ static int begin_cpu_udmabuf(struct dma_ int ret = 0; if (!ubuf->sg) { - ubuf->sg = get_sg_table(dev, buf, direction); + static DEFINE_MUTEX(lock); + + mutex_lock(&lock); + if (!ubuf->sg) + ubuf->sg = get_sg_table(dev, buf, direction); + mutex_unlock(&lock); if (IS_ERR(ubuf->sg)) { ret = PTR_ERR(ubuf->sg); ubuf->sg = NULL;