@@ -1579,18 +1579,17 @@ check_compat_entry_size_and_hooks(struct compat_ip6t_entry *e,
15791579 return ret ;
15801580}
15811581
1582- static int
1582+ static void
15831583compat_copy_entry_from_user (struct compat_ip6t_entry * e , void * * dstptr ,
15841584 unsigned int * size ,
15851585 struct xt_table_info * newinfo , unsigned char * base )
15861586{
15871587 struct xt_entry_target * t ;
15881588 struct ip6t_entry * de ;
15891589 unsigned int origsize ;
1590- int ret , h ;
1590+ int h ;
15911591 struct xt_entry_match * ematch ;
15921592
1593- ret = 0 ;
15941593 origsize = * size ;
15951594 de = (struct ip6t_entry * )* dstptr ;
15961595 memcpy (de , e , sizeof (struct ip6t_entry ));
@@ -1599,11 +1598,9 @@ compat_copy_entry_from_user(struct compat_ip6t_entry *e, void **dstptr,
15991598 * dstptr += sizeof (struct ip6t_entry );
16001599 * size += sizeof (struct ip6t_entry ) - sizeof (struct compat_ip6t_entry );
16011600
1602- xt_ematch_foreach (ematch , e ) {
1603- ret = xt_compat_match_from_user (ematch , dstptr , size );
1604- if (ret != 0 )
1605- return ret ;
1606- }
1601+ xt_ematch_foreach (ematch , e )
1602+ xt_compat_match_from_user (ematch , dstptr , size );
1603+
16071604 de -> target_offset = e -> target_offset - (origsize - * size );
16081605 t = compat_ip6t_get_target (e );
16091606 xt_compat_target_from_user (t , dstptr , size );
@@ -1615,7 +1612,6 @@ compat_copy_entry_from_user(struct compat_ip6t_entry *e, void **dstptr,
16151612 if ((unsigned char * )de - base < newinfo -> underflow [h ])
16161613 newinfo -> underflow [h ] -= origsize - * size ;
16171614 }
1618- return ret ;
16191615}
16201616
16211617static int compat_check_entry (struct ip6t_entry * e , struct net * net ,
@@ -1736,17 +1732,12 @@ translate_compat_table(struct net *net,
17361732 }
17371733 entry1 = newinfo -> entries ;
17381734 pos = entry1 ;
1739- size = compatr -> size ;
1740- xt_entry_foreach (iter0 , entry0 , compatr -> size ) {
1741- ret = compat_copy_entry_from_user (iter0 , & pos , & size ,
1742- newinfo , entry1 );
1743- if (ret != 0 )
1744- break ;
1745- }
1735+ xt_entry_foreach (iter0 , entry0 , compatr -> size )
1736+ compat_copy_entry_from_user (iter0 , & pos , & size ,
1737+ newinfo , entry1 );
1738+
17461739 xt_compat_flush_offsets (AF_INET6 );
17471740 xt_compat_unlock (AF_INET6 );
1748- if (ret )
1749- goto free_newinfo ;
17501741
17511742 ret = - ELOOP ;
17521743 if (!mark_source_chains (newinfo , compatr -> valid_hooks , entry1 ))
0 commit comments