From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752533AbcF2NVC (ORCPT ); Wed, 29 Jun 2016 09:21:02 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:55710 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752007AbcF2NU6 (ORCPT ); Wed, 29 Jun 2016 09:20:58 -0400 X-AuditID: cbfee68f-f79476d000001429-17-5773cb3828bc From: Andi Shyti To: Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Andi Shyti , Andi Shyti Subject: [PATCH 01/15] lirc_dev: place buffer allocation on separate function Date: Wed, 29 Jun 2016 22:20:30 +0900 Message-id: <1467206444-9935-2-git-send-email-andi.shyti@samsung.com> X-Mailer: git-send-email 2.8.1 In-reply-to: <1467206444-9935-1-git-send-email-andi.shyti@samsung.com> References: <1467206444-9935-1-git-send-email-andi.shyti@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsWyRsSkUNfidHG4wcIuaYvtR56xWiz+8ZzJ 4vKuOWwWPRu2slqsflbhwOpxfcknZo8t/XfZPfq2rGL0+LxJLoAlissmJTUnsyy1SN8ugSuj deEC9oLlQhV7T3UxNTCe4eti5OSQEDCR+PDyGBuELSZx4d56IJuLQ0hgBaPE9L497DBFU35M ZoJILGWUmHT7KiOE8xHIOfUdrJ1NQFOi6fYPIJuDQ0TAWOLcD3WQMLNAM6PE7utGILawgK/E nflTmUBsFgFViUffb7CDlPMKuEocOZEKsUtO4vL0B2ATOQXcJJafvwl2gxBQSevT/2BrJQTa 2SX+vVrBAjFHQOLb5EMsIHMkBGQlNh1ghpgjKXFwxQ2WCYzCCxgZVjGKphYkFxQnpRcZ6xUn 5haX5qXrJefnbmIEBvHpf8/6dzDePWB9iFGAg1GJh/fH4eJwIdbEsuLK3EOMpkAbJjJLiSbn A2MlryTe0NjMyMLUxNTYyNzSTEmcd6HUz2AhgfTEktTs1NSC1KL4otKc1OJDjEwcnFINjH0F jhteV76c+1XRJel105uJns/1H/3q17e8EvtJLf2W/9E57fbcFgZXdkpNzX10cX2CzPEIxh8L m5ZwPw++69Wg+a2hyfrUtJA7v0UNIvZ1Hyw8dN5lR2vW9XvrToscmnGOPaB3GgPHM7UH0ked 3I5kzzyvcWJK8JtPDLlXJx353ZJU4LhHuUuJpTgj0VCLuag4EQDzhW30XQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprOIsWRmVeSWpSXmKPExsVy+t9jAV2L08XhBnveiFlsP/KM1WLxj+dM Fpd3zWGz6NmwldVi9bMKB1aP60s+MXts6b/L7tG3ZRWjx+dNcgEsUQ2MNhmpiSmpRQqpecn5 KZl56bZK3sHxzvGmZgaGuoaWFuZKCnmJuam2Si4+AbpumTlAe5UUyhJzSoFCAYnFxUr6dpgm hIa46VrANEbo+oYEwfUYGaCBhDWMGa0LF7AXLBeq2Huqi6mB8QxfFyMnh4SAicSUH5OZIGwx iQv31rN1MXJxCAksZZSYdPsqI4TzEcg59Z0NpIpNQFOi6fYPIJuDQ0TAWOLcD3WQMLNAM6PE 7utGILawgK/EnflTwYayCKhKPPp+gx2knFfAVeLIiVSIXXISl6c/AJvIKeAmsfz8TXYQWwio pPXpf8YJjLwLGBlWMUqkFiQXFCel5xrlpZbrFSfmFpfmpesl5+duYgRHyjPpHYyHd7kfYhTg YFTi4bW4UBQuxJpYVlyZe4hRgoNZSYRX7kRxuBBvSmJlVWpRfnxRaU5q8SFGU6C7JjJLiSbn A6M4ryTe0NjEzMjSyNzQwsjYXEmc9/H/dWFCAumJJanZqakFqUUwfUwcnFINjKY/JIr2pH7t Cv0jbD/3ybLZk+clH1TmjHykYGm67HRe2lKDswyFnVwuCvN+rYtL+VZ/zG9l3ts3PjwzOHed Lbv4dP2Cgl0nds5X/XVV8YWcsMHG5gN8rbt2LqneI7M2WZIh1fzDjCOXZ/6u+GXD7L2F5eqm ILvP7/9qVdps5Q6qsnrSxKtnvFOJpTgj0VCLuag4EQAgX+uXqgIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During the driver registration, move the buffer allocation on a separate function. Signed-off-by: Andi Shyti --- drivers/media/rc/lirc_dev.c | 57 +++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index 92ae190..5716978 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -203,13 +203,41 @@ err_out: return retval; } -int lirc_register_driver(struct lirc_driver *d) +static int lirc_allocate_buffer(struct irctl *ir) { - struct irctl *ir; - int minor; + int err; int bytes_in_key; unsigned int chunk_size; unsigned int buffer_size; + struct lirc_driver *d = &ir->d; + + bytes_in_key = BITS_TO_LONGS(d->code_length) + + (d->code_length % 8 ? 1 : 0); + buffer_size = d->buffer_size ? d->buffer_size : BUFLEN / bytes_in_key; + chunk_size = d->chunk_size ? d->chunk_size : bytes_in_key; + + if (d->rbuf) { + ir->buf = d->rbuf; + } else { + ir->buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL); + if (!ir->buf) + return -ENOMEM; + + err = lirc_buffer_init(ir->buf, chunk_size, buffer_size); + if (err) { + kfree(ir->buf); + return err; + } + } + ir->chunk_size = ir->buf->chunk_size; + + return 0; +} + +int lirc_register_driver(struct lirc_driver *d) +{ + struct irctl *ir; + int minor; int err; if (!d) { @@ -314,26 +342,9 @@ int lirc_register_driver(struct lirc_driver *d) /* some safety check 8-) */ d->name[sizeof(d->name)-1] = '\0'; - bytes_in_key = BITS_TO_LONGS(d->code_length) + - (d->code_length % 8 ? 1 : 0); - buffer_size = d->buffer_size ? d->buffer_size : BUFLEN / bytes_in_key; - chunk_size = d->chunk_size ? d->chunk_size : bytes_in_key; - - if (d->rbuf) { - ir->buf = d->rbuf; - } else { - ir->buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL); - if (!ir->buf) { - err = -ENOMEM; - goto out_lock; - } - err = lirc_buffer_init(ir->buf, chunk_size, buffer_size); - if (err) { - kfree(ir->buf); - goto out_lock; - } - } - ir->chunk_size = ir->buf->chunk_size; + err = lirc_allocate_buffer(ir); + if (err) + goto out_lock; if (d->features == 0) d->features = LIRC_CAN_REC_LIRCCODE; -- 2.8.1