Loading drivers/pcmcia/cistpl.c +81 −74 Original line number Diff line number Diff line Loading @@ -1577,16 +1577,19 @@ int pccard_loop_tuple(struct pcmcia_socket *s, unsigned int function, EXPORT_SYMBOL(pccard_loop_tuple); /*====================================================================== This tries to determine if a card has a sensible CIS. It returns the number of tuples in the CIS, or 0 if the CIS looks bad. The checks include making sure several critical tuples are present and valid; seeing if the total number of tuples is reasonable; and looking for tuples that use reserved codes. ======================================================================*/ /** * pccard_validate_cis() - check whether card has a sensible CIS * @s: the struct pcmcia_socket we are to check * @info: returns the number of tuples in the (valid) CIS, or 0 * * This tries to determine if a card has a sensible CIS. In @info, it * returns the number of tuples in the CIS, or 0 if the CIS looks bad. The * checks include making sure several critical tuples are present and * valid; seeing if the total number of tuples is reasonable; and * looking for tuples that use reserved codes. * * The function returns 0 on success. */ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) { tuple_t *tuple; Loading @@ -1602,13 +1605,13 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) tuple = kmalloc(sizeof(*tuple), GFP_KERNEL); if (tuple == NULL) { dev_printk(KERN_WARNING, &s->dev, "no memory to validate CIS\n"); dev_warn(&s->dev, "no memory to validate CIS\n"); return -ENOMEM; } p = kmalloc(sizeof(*p), GFP_KERNEL); if (p == NULL) { kfree(tuple); dev_printk(KERN_WARNING, &s->dev, "no memory to validate CIS\n"); dev_warn(&s->dev, "no memory to validate CIS\n"); return -ENOMEM; } Loading @@ -1622,8 +1625,8 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) /* First tuple should be DEVICE; we should really have either that or a CFTABLE_ENTRY of some sort */ if ((tuple->TupleCode == CISTPL_DEVICE) || (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY, p) == 0) || (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY_CB, p) == 0)) (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY, p)) || (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY_CB, p))) dev_ok++; /* All cards should have a MANFID tuple, and/or a VERS_1 or VERS_2 Loading @@ -1650,15 +1653,19 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) ((!dev_ok || !ident_ok) && (count > 10))) count = 0; ret = 0; done: /* invalidate CIS cache on failure */ if (!dev_ok || !ident_ok || !count) if (!dev_ok || !ident_ok || !count) { destroy_cis_cache(s); ret = -EIO; } if (info) *info = count; kfree(tuple); kfree(p); return 0; return ret; } EXPORT_SYMBOL(pccard_validate_cis); Loading
drivers/pcmcia/cistpl.c +81 −74 Original line number Diff line number Diff line Loading @@ -1577,16 +1577,19 @@ int pccard_loop_tuple(struct pcmcia_socket *s, unsigned int function, EXPORT_SYMBOL(pccard_loop_tuple); /*====================================================================== This tries to determine if a card has a sensible CIS. It returns the number of tuples in the CIS, or 0 if the CIS looks bad. The checks include making sure several critical tuples are present and valid; seeing if the total number of tuples is reasonable; and looking for tuples that use reserved codes. ======================================================================*/ /** * pccard_validate_cis() - check whether card has a sensible CIS * @s: the struct pcmcia_socket we are to check * @info: returns the number of tuples in the (valid) CIS, or 0 * * This tries to determine if a card has a sensible CIS. In @info, it * returns the number of tuples in the CIS, or 0 if the CIS looks bad. The * checks include making sure several critical tuples are present and * valid; seeing if the total number of tuples is reasonable; and * looking for tuples that use reserved codes. * * The function returns 0 on success. */ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) { tuple_t *tuple; Loading @@ -1602,13 +1605,13 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) tuple = kmalloc(sizeof(*tuple), GFP_KERNEL); if (tuple == NULL) { dev_printk(KERN_WARNING, &s->dev, "no memory to validate CIS\n"); dev_warn(&s->dev, "no memory to validate CIS\n"); return -ENOMEM; } p = kmalloc(sizeof(*p), GFP_KERNEL); if (p == NULL) { kfree(tuple); dev_printk(KERN_WARNING, &s->dev, "no memory to validate CIS\n"); dev_warn(&s->dev, "no memory to validate CIS\n"); return -ENOMEM; } Loading @@ -1622,8 +1625,8 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) /* First tuple should be DEVICE; we should really have either that or a CFTABLE_ENTRY of some sort */ if ((tuple->TupleCode == CISTPL_DEVICE) || (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY, p) == 0) || (pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY_CB, p) == 0)) (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY, p)) || (!pccard_read_tuple(s, BIND_FN_ALL, CISTPL_CFTABLE_ENTRY_CB, p))) dev_ok++; /* All cards should have a MANFID tuple, and/or a VERS_1 or VERS_2 Loading @@ -1650,15 +1653,19 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info) ((!dev_ok || !ident_ok) && (count > 10))) count = 0; ret = 0; done: /* invalidate CIS cache on failure */ if (!dev_ok || !ident_ok || !count) if (!dev_ok || !ident_ok || !count) { destroy_cis_cache(s); ret = -EIO; } if (info) *info = count; kfree(tuple); kfree(p); return 0; return ret; } EXPORT_SYMBOL(pccard_validate_cis);