On Thu, 10 Sep 2009 14:56:42 +0200 Albert Herranz <albert_herr...@yahoo.es> 
wrote:

> Some manufacturers provide vendor information in non-vendor specific CIS
> tuples. For example, Broadcom uses an Extended Function tuple to provide
> the MAC address on some of their network cards, as in the case of the
> Nintendo Wii WLAN daughter card.
> 
> This patch allows passing correct tuples unknown to the SDIO core to
> a matching SDIO driver instead of rejecting them and failing.
> 

This looks leaky to me.


:               if (i < ARRAY_SIZE(cis_tpl_list)) {
:                       const struct cis_tpl *tpl = cis_tpl_list + i;
:                       if (tpl_link < tpl->min_size) {
:                               printk(KERN_ERR
:                                      "%s: bad CIS tuple 0x%02x"
:                                      " (length = %u, expected >= %u)\n",
:                                      mmc_hostname(card->host),
:                                      tpl_code, tpl_link, tpl->min_size);
:                               ret = -EINVAL;

ret == -EINVAL

:                       } else if (tpl->parse) {
:                               ret = tpl->parse(card, func,
:                                                this->data, tpl_link);
:                       }
:                       /* already successfully parsed, not needed anymore */
:                       if (!ret)
:                               kfree(this);

`this' doesn't get freed

:               } else {
:                       /* unknown tuple */
:                       ret = -EILSEQ;
:               }
: 
:               if (ret == -EILSEQ) {

`this' doesn't get remembered.

:                       /* this tuple is unknown to the core */
:                       this->next = NULL;
:                       this->code = tpl_code;
:                       this->size = tpl_link;
:                       *prev = this;
:                       prev = &this->next;
:                       pr_debug("%s: queuing CIS tuple 0x%02x length %u\n",
:                                mmc_hostname(card->host), tpl_code, tpl_link);
:                       /* keep on analyzing tuples */
:                       ret = 0;
:               }
: 
:               ptr += tpl_link;

`this' leaks.

:       } while (!ret);

Please check?
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to