SV: PATCH: Arla CVS Current on Linux 2.6.24-2.6.35-rc1

Bo Brantén bosse at acc.umu.se
Sun Jul 11 18:29:38 CEST 2010


On Tue, 29 Jun 2010, Tomas Olsson wrote:

> We may be leaking group_info references in nnpfs_get_pag_group() and store_pag().

Yes, the reference count is decremented with put_group_info() but it is 
two possible ways to fix it, I think the second one is the most correct:

nnpfs_get_pag_group(void)
{
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,28)
     struct group_info *gi = current->group_info;
     nnpfs_pag_t ret = current->uid;
#else
     struct group_info *gi = get_current_groups();
     nnpfs_pag_t ret = current_uid();
#endif
     int i;

     get_group_info(gi);

     i = find_pag(gi);
     if (i != NNPFS_PAG_NOTFOUND)
         ret = GROUP_AT(gi, i);

     put_group_info(gi);
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28)
     put_group_info(gi);
#endif

     NNPFSDEB(XDEBSYS, ("nnpfs_get_pag_group: returning %u\n", ret));
     return ret;
}

nnpfs_get_pag_group(void)
{
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,28)
     struct group_info *gi = current->group_info;
     nnpfs_pag_t ret = current->uid;
#else
     struct group_info *gi = get_current_groups();
     nnpfs_pag_t ret = current_uid();
#endif
     int i;

#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,28)
     get_group_info(gi);
#endif

     i = find_pag(gi);
     if (i != NNPFS_PAG_NOTFOUND)
         ret = GROUP_AT(gi, i);

     put_group_info(gi);

     NNPFSDEB(XDEBSYS, ("nnpfs_get_pag_group: returning %u\n", ret));
     return ret;
}

Bo Branten



More information about the Arla-drinkers mailing list