Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/dev/dm



On Aug 19,  6:50am, Maxime Villard wrote:
} Le 18/08/2014 19:16, Alistair G. Crooks a écrit :
} > 
} > Module Name:        src
} > Committed By:       agc
} > Date:               Mon Aug 18 17:16:42 UTC 2014
} > 
} > Modified Files:
} >     src/sys/dev/dm: dm_target_stripe.c
} > 
} > Log Message:
} > Avoid a memory leak - from maxv
} > 
} > To generate a diff of this commit:
} > cvs rdiff -u -r1.19 -r1.20 src/sys/dev/dm/dm_target_stripe.c
} 
} I have a doubt for this one.
} 
}       for (strpi = DM_STRIPE_DEV_OFFSET; strpi < strpc; strpi += 2) {
}               printf("Stripe target device name %s -- offset %s\n",
}                      argv[strpi], argv[strpi+1]);
} 
}               tlc = kmem_alloc(sizeof(*tlc), KM_NOSLEEP);
}               if ((tlc->pdev = dm_pdev_insert(argv[strpi])) == NULL) {
}                       kmem_free(tsc, sizeof(*tsc));
} XXX                   kmem_free(tlc, sizeof(*tlc));
}                       return ENOENT;
}               }
}               tlc->offset = atoi(argv[strpi+1]);
} 
}               /* Insert striping device to linked list. */
} XXX           TAILQ_INSERT_TAIL(&tsc->stripe_devs, tlc, entries);
}       }
} 
} The tlc's inserted into the list are not freed, are they?

     Notice the "return ENOENT" after the two calls to kmem_free().
If the first XXX line is executed then the second XXX line won't be.

}-- End of excerpt from Maxime Villard


Home | Main Index | Thread Index | Old Index