!C99Shell v. 1.0 pre-release build #13!

Software: Apache/2.0.54 (Unix) mod_perl/1.99_09 Perl/v5.8.0 mod_ssl/2.0.54 OpenSSL/0.9.7l DAV/2 FrontPage/5.0.2.2635 PHP/4.4.0 mod_gzip/2.0.26.1a 

uname -a: Linux snow.he.net 4.4.276-v2-mono-1 #1 SMP Wed Jul 21 11:21:17 PDT 2021 i686 

uid=99(nobody) gid=98(nobody) groups=98(nobody) 

Safe-mode: OFF (not secure)

/usr/src/linux-2.4.18-xfs-1.1/drivers/md/   drwxr-xr-x
Free 318.36 GB of 458.09 GB (69.5%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     linear.c (4.38 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/*
   linear.c : Multiple Devices driver for Linux
              Copyright (C) 1994-96 Marc ZYNGIER
          <zyngier@ufr-info-p7.ibp.fr> or
          <maz@gloups.fdn.fr>

   Linear mode management functions.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.
   
   You should have received a copy of the GNU General Public License
   (for example /usr/src/linux/COPYING); if not, write to the Free
   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  
*/

#include <linux/module.h>

#include <linux/raid/md.h>
#include <linux/slab.h>

#include <linux/raid/linear.h>

#define MAJOR_NR MD_MAJOR
#define MD_DRIVER
#define MD_PERSONALITY

static int linear_run (mddev_t *mddev)
{
    linear_conf_t *conf;
    struct linear_hash *table;
    mdk_rdev_t *rdev;
    int size, i, j, nb_zone;
    unsigned int curr_offset;

    MOD_INC_USE_COUNT;

    conf = kmalloc (sizeof (*conf), GFP_KERNEL);
    if (!conf)
        goto out;
    mddev->private = conf;

    if (md_check_ordering(mddev)) {
        printk("linear: disks are not ordered, aborting!\n");
        goto out;
    }
    /*
     * Find the smallest device.
     */

    conf->smallest = NULL;
    curr_offset = 0;
    ITERATE_RDEV_ORDERED(mddev,rdev,j) {
        dev_info_t *disk = conf->disks + j;

        disk->dev = rdev->dev;
        disk->size = rdev->size;
        disk->offset = curr_offset;

        curr_offset += disk->size;

        if (!conf->smallest || (disk->size < conf->smallest->size))
            conf->smallest = disk;
    }

    nb_zone = conf->nr_zones =
        md_size[mdidx(mddev)] / conf->smallest->size +
        ((md_size[mdidx(mddev)] % conf->smallest->size) ? 1 : 0);
  
    conf->hash_table = kmalloc (sizeof (struct linear_hash) * nb_zone,
                    GFP_KERNEL);
    if (!conf->hash_table)
        goto out;

    /*
     * Here we generate the linear hash table
     */
    table = conf->hash_table;
    i = 0;
    size = 0;
    for (j = 0; j < mddev->nb_dev; j++) {
        dev_info_t *disk = conf->disks + j;

        if (size < 0) {
            table[-1].dev1 = disk;
        }
        size += disk->size;

        while (size>0) {
            table->dev0 = disk;
            table->dev1 = NULL;
            size -= conf->smallest->size;
            table++;
        }
    }
    if (table-conf->hash_table != nb_zone)
        BUG();

    return 0;

out:
    if (conf)
        kfree(conf);
    MOD_DEC_USE_COUNT;
    return 1;
}

static int linear_stop (mddev_t *mddev)
{
    linear_conf_t *conf = mddev_to_conf(mddev);
  
    kfree(conf->hash_table);
    kfree(conf);

    MOD_DEC_USE_COUNT;

    return 0;
}

static int linear_make_request (mddev_t *mddev,
            int rw, struct buffer_head * bh)
{
        linear_conf_t *conf = mddev_to_conf(mddev);
        struct linear_hash *hash;
        dev_info_t *tmp_dev;
        long block;

    block = bh->b_rsector >> 1;
    hash = conf->hash_table + (block / conf->smallest->size);
  
    if (block >= (hash->dev0->size + hash->dev0->offset)) {
        if (!hash->dev1) {
            printk ("linear_make_request : hash->dev1==NULL for block %ld\n",
                        block);
            buffer_IO_error(bh);
            return 0;
        }
        tmp_dev = hash->dev1;
    } else
        tmp_dev = hash->dev0;
    
    if (block >= (tmp_dev->size + tmp_dev->offset)
                || block < tmp_dev->offset) {
        printk ("linear_make_request: Block %ld out of bounds on dev %s size %ld offset %ld\n", block, kdevname(tmp_dev->dev), tmp_dev->size, tmp_dev->offset);
        buffer_IO_error(bh);
        return 0;
    }
    bh->b_rdev = tmp_dev->dev;
    bh->b_rsector = bh->b_rsector - (tmp_dev->offset << 1);

    return 1;
}

static int linear_status (char *page, mddev_t *mddev)
{
    int sz = 0;

#undef MD_DEBUG
#ifdef MD_DEBUG
    int j;
    linear_conf_t *conf = mddev_to_conf(mddev);
  
    sz += sprintf(page+sz, "      ");
    for (j = 0; j < conf->nr_zones; j++)
    {
        sz += sprintf(page+sz, "[%s",
            partition_name(conf->hash_table[j].dev0->dev));

        if (conf->hash_table[j].dev1)
            sz += sprintf(page+sz, "/%s] ",
              partition_name(conf->hash_table[j].dev1->dev));
        else
            sz += sprintf(page+sz, "] ");
    }
    sz += sprintf(page+sz, "\n");
#endif
    sz += sprintf(page+sz, " %dk rounding", mddev->param.chunk_size/1024);
    return sz;
}


static mdk_personality_t linear_personality=
{
    name:        "linear",
    make_request:    linear_make_request,
    run:        linear_run,
    stop:        linear_stop,
    status:        linear_status,
};

static int md__init linear_init (void)
{
    return register_md_personality (LINEAR, &linear_personality);
}

static void linear_exit (void)
{
    unregister_md_personality (LINEAR);
}


module_init(linear_init);
module_exit(linear_exit);
MODULE_LICENSE("GPL");

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.033 ]--