[2.6 patch] drivers/block/nbd.c: don't defer compile error to runtime

From: Adrian Bunk (bunk_at_stusta.de)
Date: 09/03/05

  • Next message: H. Peter Anvin: "Re: [RFC] Splitting out kernel<=>userspace ABI headers"
    Date:	Sat, 3 Sep 2005 01:24:03 +0200
    To: Adam Kropelin <akropel1@rochester.rr.com>
    
    

    On Fri, Sep 02, 2005 at 07:20:47PM -0400, Adam Kropelin wrote:
    > Adrian Bunk wrote:
    > > If we can detect a problem at compile time, the compilation should
    > > fail.
    >
    > [...]
    >
    > > if (sizeof(struct nbd_request) != 28) {
    > > - printk(KERN_CRIT "nbd: sizeof nbd_request needs to be 28 in order to work!\n" );
    > > - return -EIO;
    > > + extern void nbd_request_wrong_size(void);
    > > + nbd_request_wrong_size();
    >
    > BUILD_BUG_ON(sizeof(struct nbd_request) != 28);
    >
    > ...perhaps?

    Neat, I didn't know about this.

    I didn't know about this.

    > --Adam

    cu
    Adrian

    <-- snip -->

    If we can detect a problem at compile time, the compilation should fail.

    Signed-off-by: Adrian Bunk <bunk@stusta.de>

    --- linux-2.6.13-mm1-full/drivers/block/nbd.c.old 2005-09-02 23:48:27.000000000 +0200
    +++ linux-2.6.13-mm1-full/drivers/block/nbd.c 2005-09-03 01:08:04.000000000 +0200
    @@ -643,10 +643,7 @@
             int err = -ENOMEM;
             int i;
     
    - if (sizeof(struct nbd_request) != 28) {
    - printk(KERN_CRIT "nbd: sizeof nbd_request needs to be 28 in order to work!\n" );
    - return -EIO;
    - }
    + BUILD_BUG_ON(sizeof(struct nbd_request) != 28);
     
             if (nbds_max > MAX_NBD) {
                     printk(KERN_CRIT "nbd: cannot allocate more than %u nbds; %u requested.\n", MAX_NBD,

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: H. Peter Anvin: "Re: [RFC] Splitting out kernel<=>userspace ABI headers"

    Relevant Pages