Skip to content

Commit 8f1fff0

Browse files
aishpantgregkh
authored andcommitted
staging: bcm2835-audio: use conditional only for error case
* Refactor conditional to check if memory allocation has failed and immediately return (-ENOMEM); if block for success case is removed. * Return the error value -EBUSY when queue_work() fails. Signed-off-by: Aishwarya Pant <aishpant@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 5e00b25 commit 8f1fff0

File tree

1 file changed

+32
-35
lines changed

1 file changed

+32
-35
lines changed

drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -131,77 +131,74 @@ static void my_wq_function(struct work_struct *work)
131131

132132
int bcm2835_audio_start(struct bcm2835_alsa_stream *alsa_stream)
133133
{
134-
int ret = -1;
135-
136134
LOG_DBG(" .. IN\n");
137135
if (alsa_stream->my_wq) {
138136
struct bcm2835_audio_work *work;
139137

140138
work = kmalloc(sizeof(*work), GFP_ATOMIC);
141139
/*--- Queue some work (item 1) ---*/
142-
if (work) {
143-
INIT_WORK(&work->my_work, my_wq_function);
144-
work->alsa_stream = alsa_stream;
145-
work->cmd = BCM2835_AUDIO_START;
146-
if (queue_work(alsa_stream->my_wq, &work->my_work))
147-
ret = 0;
148-
} else {
140+
if (!work) {
149141
LOG_ERR(" .. Error: NULL work kmalloc\n");
142+
return -ENOMEM;
143+
}
144+
INIT_WORK(&work->my_work, my_wq_function);
145+
work->alsa_stream = alsa_stream;
146+
work->cmd = BCM2835_AUDIO_START;
147+
if (!queue_work(alsa_stream->my_wq, &work->my_work)) {
148+
return -EBUSY;
150149
}
151150
}
152-
LOG_DBG(" .. OUT %d\n", ret);
153-
return ret;
151+
LOG_DBG(" .. OUT\n");
152+
return 0;
154153
}
155154

156155
int bcm2835_audio_stop(struct bcm2835_alsa_stream *alsa_stream)
157156
{
158-
int ret = -1;
159-
160157
LOG_DBG(" .. IN\n");
161158
if (alsa_stream->my_wq) {
162159
struct bcm2835_audio_work *work;
163160

164161
work = kmalloc(sizeof(*work), GFP_ATOMIC);
165162
/*--- Queue some work (item 1) ---*/
166-
if (work) {
167-
INIT_WORK(&work->my_work, my_wq_function);
168-
work->alsa_stream = alsa_stream;
169-
work->cmd = BCM2835_AUDIO_STOP;
170-
if (queue_work(alsa_stream->my_wq, &work->my_work))
171-
ret = 0;
172-
} else {
163+
if (!work) {
173164
LOG_ERR(" .. Error: NULL work kmalloc\n");
165+
return -ENOMEM;
166+
}
167+
INIT_WORK(&work->my_work, my_wq_function);
168+
work->alsa_stream = alsa_stream;
169+
work->cmd = BCM2835_AUDIO_STOP;
170+
if (!queue_work(alsa_stream->my_wq, &work->my_work)) {
171+
return -EBUSY;
174172
}
175173
}
176-
LOG_DBG(" .. OUT %d\n", ret);
177-
return ret;
174+
LOG_DBG(" .. OUT\n");
175+
return 0;
178176
}
179177

180178
int bcm2835_audio_write(struct bcm2835_alsa_stream *alsa_stream,
181179
unsigned int count, void *src)
182180
{
183-
int ret = -1;
184-
185181
LOG_DBG(" .. IN\n");
186182
if (alsa_stream->my_wq) {
187183
struct bcm2835_audio_work *work;
188184

189185
work = kmalloc(sizeof(*work), GFP_ATOMIC);
190186
/*--- Queue some work (item 1) ---*/
191-
if (work) {
192-
INIT_WORK(&work->my_work, my_wq_function);
193-
work->alsa_stream = alsa_stream;
194-
work->cmd = BCM2835_AUDIO_WRITE;
195-
work->src = src;
196-
work->count = count;
197-
if (queue_work(alsa_stream->my_wq, &work->my_work))
198-
ret = 0;
199-
} else {
187+
if (!work) {
200188
LOG_ERR(" .. Error: NULL work kmalloc\n");
189+
return -ENOMEM;
190+
}
191+
INIT_WORK(&work->my_work, my_wq_function);
192+
work->alsa_stream = alsa_stream;
193+
work->cmd = BCM2835_AUDIO_WRITE;
194+
work->src = src;
195+
work->count = count;
196+
if (!queue_work(alsa_stream->my_wq, &work->my_work)) {
197+
return -EBUSY;
201198
}
202199
}
203-
LOG_DBG(" .. OUT %d\n", ret);
204-
return ret;
200+
LOG_DBG(" .. OUT\n");
201+
return 0;
205202
}
206203

207204
static void my_workqueue_init(struct bcm2835_alsa_stream *alsa_stream)

0 commit comments

Comments
 (0)