]> git.alsa-project.org Git - tinycompress.git/commitdiff
compress: Return error messages correctly from compress_open
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Fri, 25 Jan 2013 10:43:13 +0000 (10:43 +0000)
committerVinod Koul <vinod.koul@intel.com>
Mon, 28 Jan 2013 04:09:59 +0000 (20:09 -0800)
The allocated compress object will be freed and bad_compress will be
returned, so error messages written to the allocated compress struct
will be lost. This patch writes error messages to bad_compress for error
paths in compress_open, ensuring that error messages are returned
correctly.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
compress.c

index 51455fcdc4fb95cfaeced2d4ca428a69f7863627..c575acdc4c0e1798e95183297d503e04bb3ae3ce 100644 (file)
@@ -218,18 +218,18 @@ struct compress *compress_open(unsigned int card, unsigned int device,
 
        compress->flags = flags;
        if (!((flags & COMPRESS_OUT) || (flags & COMPRESS_IN))) {
-               oops(compress, -EINVAL, "can't deduce device direction from given flags\n");
+               oops(&bad_compress, -EINVAL, "can't deduce device direction from given flags\n");
                goto input_fail;
        }
        if (flags & COMPRESS_OUT) {
                /* this should be removed once we have capture tested */
-               oops(compress, -EINVAL, "this version doesnt support capture\n");
+               oops(&bad_compress, -EINVAL, "this version doesnt support capture\n");
                goto input_fail;
        }
 
        compress->fd = open(fn, O_WRONLY);
        if (compress->fd < 0) {
-               oops(compress, errno, "cannot open device '%s'", fn);
+               oops(&bad_compress, errno, "cannot open device '%s'", fn);
                goto input_fail;
        }
 #if 0
@@ -237,14 +237,14 @@ struct compress *compress_open(unsigned int card, unsigned int device,
         * and treat in no support case
         */
        if (_is_codec_supported(compress, config) == false) {
-               oops(compress, errno, "codec not supported\n");
+               oops(&bad_compress, errno, "codec not supported\n");
                goto codec_fail;
        }
 #endif
        fill_compress_params(config, &params);
 
        if (ioctl(compress->fd, SNDRV_COMPRESS_SET_PARAMS, &params)) {
-               oops(compress, errno, "cannot set device");
+               oops(&bad_compress, errno, "cannot set device");
                goto codec_fail;
        }