% Dimensions:
% - Cause of bug
% - How bug was found
% - Drivers affected

\begin{table}[t!]
\centering
\small

\begin{tabular}{p{0.75in}p{2in}}
\hline
{\bf Bug Category} & {\bf Drivers Affected} \\
\hline
Hardware Dep.      & 8139too, be2net, dl2k, et131x, ks8851 \\
API Misuse         & 8139too, a1026, akm8975 (2), be2net (3), e1000, et131x, ks8851, lp5523, me4000, pcnet32 (2) \\
Race               & pluto2, akm8975, ks8851 \\
Allocator          & akm8975, mmc31xx, tle62x0, be2net, e1000, forcedeth \\
Resource Leak      & pluto2, mmc31xx (2) \\
Interface          & be2net (2), econet \\
Pointer            & econet \\

\begin{tabular}{llllll}
\hline
{\bf Type} & {\bf K/C} & {\bf IP} & {\bf SP} & {\bf Ptr} & {\bf Driver} \\
\hline
        HW &         K &          &       SP &       Ptr & 8139too \\
        HW &         K &       IP &       SP &       Ptr & be2net \\
        HW &         K &       IP &          &       Ptr & dl2k \\
        HW &         K &       IP &          &       Ptr & et131x \\
        HW &         C &       IP &       SP &           & ks8851 \\
       API &         K &       IP &       SP &           & 8139too \\
       API &         C &       IP &       SP &           & a1026 \\
       API &         K &       IP &          &           & akm8975 \\
       API &         C &       IP &       SP &           & akm8975 \\
       API &         C &       IP &          &           & be2net \\
       API &         C &          &          &           & be2net \\
       API &         C &          &          &           & be2net \\
       API &         C &          &          &           & e1000 \\
       API &         C &          &          &           & e1000 \\
       API &         C &          &          &           & et131x \\
       API &         K &          &          &           & ks8851 \\
       API &         K &       IP &          &           & lp5523 \\
       API &         K &          &       SP &           & me4000 \\
       API &         K &       IP &          &           & pcnet32 \\
      Race &         K &       IP &       SP &       Ptr & pluto2 \\
      Race &         K &       IP &       SP &       Ptr & akm8975 \\
      Race &         K &       IP &          &       Ptr & ks8851 \\
      Allo &         C &       IP &          &           & akm8975 \\
      Allo &         C &       IP &          &           & mmc31xx \\
      Allo &         C &       IP &          &           & tle62x0 \\
      Allo &         C &       IP &          &       Ptr & be2net \\
      Allo &         C &       IP &          &       Ptr & e1000 \\
      Allo &         C &       IP &          &       Ptr & forcedeth \\
      Leak &         C &       IP &          &           & pluto2 \\
      Leak &         C &       IP &          &           & mmc31x \\
      Leak &         C &       IP &          &           & mmc31x \\
      Intf &         C &       IP &       SP &           & be2net \\
      Intf &         C &       IP &       SP &           & be2net \\
      Intf &         C &          &          &           & econet \\
       Ptr &         K &       IP &          &       Ptr & econet
       \\

\begin{tabular}{l|l|lll|l}
\hline
{\bf Type} & {\bf Found} & {\bf Interproc.} & {\bf Paths?} & {\bf Ptr} & {\bf Driver} \\
\hline
        HW &         K &   & X & X & 8139too \\
        HW &         K & X & X & X & be2net \\
        HW &         K & X &   & X & dl2k \\
        HW &         K & X &   & X & et131x \\
        HW &         C & X & X &   & ks8851 \\
\hline
       API &         K & X & X &   & 8139too \\
       API &         C & X & X &   & a1026 \\
       API &         K & X &   &   & akm8975 \\
       API &         C & X & X &   & akm8975 \\
       API &         C & X &   &   & be2net \\
       API &         C &   &   &   & be2net \\
       API &         C &   &   &   & be2net \\
       API &         C &   &   &   & e1000 \\
       API &         C &   &   &   & e1000 \\
       API &         C &   &   &   & et131x \\
       API &         K &   &   &   & ks8851 \\
       API &         K & X &   &   & lp5523 \\
       API &         K &   & X &   & me4000 \\
       API &         K & X &   &   & pcnet32 \\
\hline
      Race &         K & X & X & X & pluto2 \\
      Race &         K & X & X & X & akm8975 \\
      Race &         K & X &   & X & ks8851 \\
\hline
      Allo &         C & X &   & X & be2net \\
      Allo &         C & X &   & X & e1000 \\
      Allo &         C & X &   & X & forcedeth \\
\hline
      Leak &         C & X &   & X & akm8975 \\
      Leak &         C & X &   & X & mmc31xx \\
      Leak &         C & X &   & X & mmc31xx \\
      Leak &         C & X &   & X & mmc31xx \\
      Leak &         C & X &   & X & pluto2 \\
      Leak &         C & X &   & X & tle62x0 \\
\hline
      Intf &         C & X & X &   & be2net \\
      Intf &         C & X & X &   & be2net \\
      Intf &         C &   &   &   & econet \\
\hline
       Ptr &         K & X &   & X & econet \\


\end{tabular}
\caption{\small \bf Bugs found by \Arch.  Types of bug are hardware
  dependence, API misuse, race, allocator/deallocator mismatch,
  resource leak, driver/kernel interface, and pointer.  Hardware
  dependence bugs arise when unexpected device inputs trigger the bug.
  ``Found'' identifies how the bug manifested, either through a kernel
  crash/warning (K) or a checker (C).  The next three columns identify
  bug properties: interprocedural (``Interproc.''), specific path
  (``Paths?''), and the need to track pointer properties with the
  object tracker (``Ptr'').  Of these bugs, at least 19 remain
  unfixed, and we were unable to establish the current status of three
  others because of significant driver changes.}
\label{fig:table-bugs}
% \vspace{-0.1in}
\end{table}
