USB: fix dereference in drivers/usb/misc/adutux.c
[safe/jmp/linux-2.6] / drivers / ieee1394 / csr1212.c
index 4812d59..586f71e 100644 (file)
@@ -779,7 +779,7 @@ static int csr1212_append_new_cache(struct csr1212_csr *csr, size_t romsize)
        romsize = (romsize + (csr->max_rom - 1)) & ~(csr->max_rom - 1);
 
        csr_addr = csr->ops->allocate_addr_range(romsize, csr->max_rom, csr->private);
-       if (csr_addr == ~0ULL) {
+       if (csr_addr == CSR1212_INVALID_ADDR_SPACE) {
                return CSR1212_ENOMEM;
        }
        if (csr_addr < CSR1212_REGISTER_SPACE_BASE) {
@@ -1618,7 +1618,8 @@ int csr1212_parse_csr(struct csr1212_csr *csr)
         * and make cache regions for them */
        for (dentry = csr->root_kv->value.directory.dentries_head;
             dentry; dentry = dentry->next) {
-               if (dentry->kv->key.id == CSR1212_KV_ID_EXTENDED_ROM) {
+               if (dentry->kv->key.id == CSR1212_KV_ID_EXTENDED_ROM &&
+                       !dentry->kv->valid) {
                        ret = _csr1212_read_keyval(csr, dentry->kv);
                        if (ret != CSR1212_SUCCESS)
                                return ret;