Hi Tim,

[auto build test ERROR on net-next/master]
[also build test ERROR on v4.14-rc3 next-20170929]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Tim-Hansen/net-core-Fix-BUG-to-BUG_ON-conditionals/20171009-070451
config: blackfin-allyesconfig (attached as .config)
compiler: bfin-uclinux-gcc (GCC) 6.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=blackfin 

All errors (new ones prefixed by >>):

   net/core/skbuff.c: In function '__pskb_pull_tail':
>> net/core/skbuff.c:1884:2: error: expected ';' before 'if'
     if (!skb_has_frag_list(skb))
     ^~

vim +1884 net/core/skbuff.c

^1da177e4c Linus Torvalds           2005-04-16  1838  
^1da177e4c Linus Torvalds           2005-04-16  1839  /**
^1da177e4c Linus Torvalds           2005-04-16  1840   *        
__pskb_pull_tail - advance tail of skb header
^1da177e4c Linus Torvalds           2005-04-16  1841   *        @skb: buffer to 
reallocate
^1da177e4c Linus Torvalds           2005-04-16  1842   *        @delta: number 
of bytes to advance tail
^1da177e4c Linus Torvalds           2005-04-16  1843   *
^1da177e4c Linus Torvalds           2005-04-16  1844   *        The function 
makes a sense only on a fragmented &sk_buff,
^1da177e4c Linus Torvalds           2005-04-16  1845   *        it expands 
header moving its tail forward and copying necessary
^1da177e4c Linus Torvalds           2005-04-16  1846   *        data from 
fragmented part.
^1da177e4c Linus Torvalds           2005-04-16  1847   *
^1da177e4c Linus Torvalds           2005-04-16  1848   *        &sk_buff MUST 
have reference count of 1.
^1da177e4c Linus Torvalds           2005-04-16  1849   *
^1da177e4c Linus Torvalds           2005-04-16  1850   *        Returns %NULL 
(and &sk_buff does not change) if pull failed
^1da177e4c Linus Torvalds           2005-04-16  1851   *        or value of new 
tail of skb in the case of success.
^1da177e4c Linus Torvalds           2005-04-16  1852   *
^1da177e4c Linus Torvalds           2005-04-16  1853   *        All the 
pointers pointing into skb header may change and must be
^1da177e4c Linus Torvalds           2005-04-16  1854   *        reloaded after 
call to this function.
^1da177e4c Linus Torvalds           2005-04-16  1855   */
^1da177e4c Linus Torvalds           2005-04-16  1856  
^1da177e4c Linus Torvalds           2005-04-16  1857  /* Moves tail of skb head 
forward, copying data from fragmented part,
^1da177e4c Linus Torvalds           2005-04-16  1858   * when it is necessary.
^1da177e4c Linus Torvalds           2005-04-16  1859   * 1. It may fail due to 
malloc failure.
^1da177e4c Linus Torvalds           2005-04-16  1860   * 2. It may change skb 
pointers.
^1da177e4c Linus Torvalds           2005-04-16  1861   *
^1da177e4c Linus Torvalds           2005-04-16  1862   * It is pretty 
complicated. Luckily, it is called only in exceptional cases.
^1da177e4c Linus Torvalds           2005-04-16  1863   */
af72868b90 Johannes Berg            2017-06-16  1864  void 
*__pskb_pull_tail(struct sk_buff *skb, int delta)
^1da177e4c Linus Torvalds           2005-04-16  1865  {
^1da177e4c Linus Torvalds           2005-04-16  1866    /* If skb has not 
enough free space at tail, get new one
^1da177e4c Linus Torvalds           2005-04-16  1867     * plus 128 bytes for 
future expansions. If we have enough
^1da177e4c Linus Torvalds           2005-04-16  1868     * room at tail, 
reallocate without expansion only if skb is cloned.
^1da177e4c Linus Torvalds           2005-04-16  1869     */
4305b54135 Arnaldo Carvalho de Melo 2007-04-19  1870    int i, k, eat = 
(skb->tail + delta) - skb->end;
^1da177e4c Linus Torvalds           2005-04-16  1871  
^1da177e4c Linus Torvalds           2005-04-16  1872    if (eat > 0 || 
skb_cloned(skb)) {
^1da177e4c Linus Torvalds           2005-04-16  1873            if 
(pskb_expand_head(skb, 0, eat > 0 ? eat + 128 : 0,
^1da177e4c Linus Torvalds           2005-04-16  1874                            
     GFP_ATOMIC))
^1da177e4c Linus Torvalds           2005-04-16  1875                    return 
NULL;
^1da177e4c Linus Torvalds           2005-04-16  1876    }
^1da177e4c Linus Torvalds           2005-04-16  1877  
b4ef80dbcb Tim Hansen               2017-10-08  1878    
BUG_ON(skb_copy_bits(skb, skb_headlen(skb),
b4ef80dbcb Tim Hansen               2017-10-08  1879                         
skb_tail_pointer(skb), delta))
^1da177e4c Linus Torvalds           2005-04-16  1880  
^1da177e4c Linus Torvalds           2005-04-16  1881    /* Optimization: no 
fragments, no reasons to preestimate
^1da177e4c Linus Torvalds           2005-04-16  1882     * size of pulled 
pages. Superb.
^1da177e4c Linus Torvalds           2005-04-16  1883     */
21dc330157 David S. Miller          2010-08-23 @1884    if 
(!skb_has_frag_list(skb))
^1da177e4c Linus Torvalds           2005-04-16  1885            goto pull_pages;
^1da177e4c Linus Torvalds           2005-04-16  1886  
^1da177e4c Linus Torvalds           2005-04-16  1887    /* Estimate size of 
pulled pages. */
^1da177e4c Linus Torvalds           2005-04-16  1888    eat = delta;
^1da177e4c Linus Torvalds           2005-04-16  1889    for (i = 0; i < 
skb_shinfo(skb)->nr_frags; i++) {
9e903e0852 Eric Dumazet             2011-10-18  1890            int size = 
skb_frag_size(&skb_shinfo(skb)->frags[i]);
9e903e0852 Eric Dumazet             2011-10-18  1891  
9e903e0852 Eric Dumazet             2011-10-18  1892            if (size >= eat)
^1da177e4c Linus Torvalds           2005-04-16  1893                    goto 
pull_pages;
9e903e0852 Eric Dumazet             2011-10-18  1894            eat -= size;
^1da177e4c Linus Torvalds           2005-04-16  1895    }
^1da177e4c Linus Torvalds           2005-04-16  1896  
^1da177e4c Linus Torvalds           2005-04-16  1897    /* If we need update 
frag list, we are in troubles.
^1da177e4c Linus Torvalds           2005-04-16  1898     * Certainly, it 
possible to add an offset to skb data,
^1da177e4c Linus Torvalds           2005-04-16  1899     * but taking into 
account that pulling is expected to
^1da177e4c Linus Torvalds           2005-04-16  1900     * be very rare 
operation, it is worth to fight against
^1da177e4c Linus Torvalds           2005-04-16  1901     * further bloating skb 
head and crucify ourselves here instead.
^1da177e4c Linus Torvalds           2005-04-16  1902     * Pure masohism, 
indeed. 8)8)
^1da177e4c Linus Torvalds           2005-04-16  1903     */
^1da177e4c Linus Torvalds           2005-04-16  1904    if (eat) {
^1da177e4c Linus Torvalds           2005-04-16  1905            struct sk_buff 
*list = skb_shinfo(skb)->frag_list;
^1da177e4c Linus Torvalds           2005-04-16  1906            struct sk_buff 
*clone = NULL;
^1da177e4c Linus Torvalds           2005-04-16  1907            struct sk_buff 
*insp = NULL;
^1da177e4c Linus Torvalds           2005-04-16  1908  
^1da177e4c Linus Torvalds           2005-04-16  1909            do {
09a626600b Kris Katterjohn          2006-01-08  1910                    
BUG_ON(!list);
^1da177e4c Linus Torvalds           2005-04-16  1911  
^1da177e4c Linus Torvalds           2005-04-16  1912                    if 
(list->len <= eat) {
^1da177e4c Linus Torvalds           2005-04-16  1913                            
/* Eaten as whole. */
^1da177e4c Linus Torvalds           2005-04-16  1914                            
eat -= list->len;
^1da177e4c Linus Torvalds           2005-04-16  1915                            
list = list->next;
^1da177e4c Linus Torvalds           2005-04-16  1916                            
insp = list;
^1da177e4c Linus Torvalds           2005-04-16  1917                    } else {
^1da177e4c Linus Torvalds           2005-04-16  1918                            
/* Eaten partially. */
^1da177e4c Linus Torvalds           2005-04-16  1919  
^1da177e4c Linus Torvalds           2005-04-16  1920                            
if (skb_shared(list)) {
^1da177e4c Linus Torvalds           2005-04-16  1921                            
        /* Sucks! We need to fork list. :-( */
^1da177e4c Linus Torvalds           2005-04-16  1922                            
        clone = skb_clone(list, GFP_ATOMIC);
^1da177e4c Linus Torvalds           2005-04-16  1923                            
        if (!clone)
^1da177e4c Linus Torvalds           2005-04-16  1924                            
                return NULL;
^1da177e4c Linus Torvalds           2005-04-16  1925                            
        insp = list->next;
^1da177e4c Linus Torvalds           2005-04-16  1926                            
        list = clone;
^1da177e4c Linus Torvalds           2005-04-16  1927                            
} else {
^1da177e4c Linus Torvalds           2005-04-16  1928                            
        /* This may be pulled without
^1da177e4c Linus Torvalds           2005-04-16  1929                            
         * problems. */
^1da177e4c Linus Torvalds           2005-04-16  1930                            
        insp = list;
^1da177e4c Linus Torvalds           2005-04-16  1931                            
}
^1da177e4c Linus Torvalds           2005-04-16  1932                            
if (!pskb_pull(list, eat)) {
^1da177e4c Linus Torvalds           2005-04-16  1933                            
        kfree_skb(clone);
^1da177e4c Linus Torvalds           2005-04-16  1934                            
        return NULL;
^1da177e4c Linus Torvalds           2005-04-16  1935                            
}
^1da177e4c Linus Torvalds           2005-04-16  1936                            
break;
^1da177e4c Linus Torvalds           2005-04-16  1937                    }
^1da177e4c Linus Torvalds           2005-04-16  1938            } while (eat);
^1da177e4c Linus Torvalds           2005-04-16  1939  
^1da177e4c Linus Torvalds           2005-04-16  1940            /* Free pulled 
out fragments. */
^1da177e4c Linus Torvalds           2005-04-16  1941            while ((list = 
skb_shinfo(skb)->frag_list) != insp) {
^1da177e4c Linus Torvalds           2005-04-16  1942                    
skb_shinfo(skb)->frag_list = list->next;
^1da177e4c Linus Torvalds           2005-04-16  1943                    
kfree_skb(list);
^1da177e4c Linus Torvalds           2005-04-16  1944            }
^1da177e4c Linus Torvalds           2005-04-16  1945            /* And insert 
new clone at head. */
^1da177e4c Linus Torvalds           2005-04-16  1946            if (clone) {
^1da177e4c Linus Torvalds           2005-04-16  1947                    
clone->next = list;
^1da177e4c Linus Torvalds           2005-04-16  1948                    
skb_shinfo(skb)->frag_list = clone;
^1da177e4c Linus Torvalds           2005-04-16  1949            }
^1da177e4c Linus Torvalds           2005-04-16  1950    }
^1da177e4c Linus Torvalds           2005-04-16  1951    /* Success! Now we may 
commit changes to skb data. */
^1da177e4c Linus Torvalds           2005-04-16  1952  
^1da177e4c Linus Torvalds           2005-04-16  1953  pull_pages:
^1da177e4c Linus Torvalds           2005-04-16  1954    eat = delta;
^1da177e4c Linus Torvalds           2005-04-16  1955    k = 0;
^1da177e4c Linus Torvalds           2005-04-16  1956    for (i = 0; i < 
skb_shinfo(skb)->nr_frags; i++) {
9e903e0852 Eric Dumazet             2011-10-18  1957            int size = 
skb_frag_size(&skb_shinfo(skb)->frags[i]);
9e903e0852 Eric Dumazet             2011-10-18  1958  
9e903e0852 Eric Dumazet             2011-10-18  1959            if (size <= 
eat) {
ea2ab69379 Ian Campbell             2011-08-22  1960                    
skb_frag_unref(skb, i);
9e903e0852 Eric Dumazet             2011-10-18  1961                    eat -= 
size;
^1da177e4c Linus Torvalds           2005-04-16  1962            } else {
^1da177e4c Linus Torvalds           2005-04-16  1963                    
skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i];
^1da177e4c Linus Torvalds           2005-04-16  1964                    if 
(eat) {
^1da177e4c Linus Torvalds           2005-04-16  1965                            
skb_shinfo(skb)->frags[k].page_offset += eat;
9e903e0852 Eric Dumazet             2011-10-18  1966                            
skb_frag_size_sub(&skb_shinfo(skb)->frags[k], eat);
3ccc6c6faa linzhang                 2017-07-17  1967                            
if (!i)
3ccc6c6faa linzhang                 2017-07-17  1968                            
        goto end;
^1da177e4c Linus Torvalds           2005-04-16  1969                            
eat = 0;
^1da177e4c Linus Torvalds           2005-04-16  1970                    }
^1da177e4c Linus Torvalds           2005-04-16  1971                    k++;
^1da177e4c Linus Torvalds           2005-04-16  1972            }
^1da177e4c Linus Torvalds           2005-04-16  1973    }
^1da177e4c Linus Torvalds           2005-04-16  1974    
skb_shinfo(skb)->nr_frags = k;
^1da177e4c Linus Torvalds           2005-04-16  1975  
3ccc6c6faa linzhang                 2017-07-17  1976  end:
^1da177e4c Linus Torvalds           2005-04-16  1977    skb->tail     += delta;
^1da177e4c Linus Torvalds           2005-04-16  1978    skb->data_len -= delta;
^1da177e4c Linus Torvalds           2005-04-16  1979  
1f8b977ab3 Willem de Bruijn         2017-08-03  1980    if (!skb->data_len)
1f8b977ab3 Willem de Bruijn         2017-08-03  1981            
skb_zcopy_clear(skb, false);
1f8b977ab3 Willem de Bruijn         2017-08-03  1982  
27a884dc3c Arnaldo Carvalho de Melo 2007-04-19  1983    return 
skb_tail_pointer(skb);
^1da177e4c Linus Torvalds           2005-04-16  1984  }
b4ac530fc3 David S. Miller          2009-02-10  1985  
EXPORT_SYMBOL(__pskb_pull_tail);
^1da177e4c Linus Torvalds           2005-04-16  1986  

:::::: The code at line 1884 was first introduced by commit
:::::: 21dc330157454046dd7c494961277d76e1c957fe net: Rename skb_has_frags to 
skb_has_frag_list

:::::: TO: David S. Miller <da...@davemloft.net>
:::::: CC: David S. Miller <da...@davemloft.net>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to