lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AANLkTinLBbKaw=DwVFgORtQ=uA+zkF8QUUKj6uiqLaMw@mail.gmail.com>
Date:	Fri, 25 Mar 2011 17:58:05 -0400
From:	Mike Frysinger <vapier@...too.org>
To:	Jamie Iles <jamie@...ieiles.com>
Cc:	linux-kernel@...r.kernel.org, gregkh@...e.de
Subject: Re: [RFC PATCHv3 1/4] drivers/otp: add initial support for OTP memory

On Fri, Mar 25, 2011 at 13:14, Jamie Iles wrote:
> --- /dev/null
> +++ b/drivers/otp/Kconfig
> +         may have different characterstics.  This provides a character device

characterstics -> characteristics

> +if OTP
> +
> +config WRITE_ENABLE
> +       bool "Enable writing support of OTP pages"
> +       default n
> +       help

does this show correctly in the kconfig by putting this under "if otp"
instead of "depends otp" ?  it should show the write option indented
rather than at the same level.

> +/* We'll allow OTP devices to be named otpa-otpz. */
> +#define MAX_OTP_DEVICES                26

mmm is that still true ?

> +static unsigned long registered_otp_map[BITS_TO_LONGS(MAX_OTP_DEVICES)];
> +static DEFINE_MUTEX(otp_register_mutex);

do we really need this ?  if we let the minor number dictate
availability, then we can increment until that errors/wraps, and we
dont need to do any tracking ...

> +       if (fmt == OTP_REDUNDANCY_FMT_SINGLE_ENDED)
> +               fmt_string = "single-ended";
> +       else if (fmt == OTP_REDUNDANCY_FMT_REDUNDANT)
> +               fmt_string = "redundant";
> +       else if (fmt == OTP_REDUNDANCY_FMT_DIFFERENTIAL)
> +               fmt_string = "differential";
> +       else if (fmt == OTP_REDUNDANCY_FMT_DIFFERENTIAL_REDUNDANT)
> +               fmt_string = "differential-redundant";
> +       else if (fmt == OTP_REDUNDANCY_FMT_ECC)
> +               fmt_string = "ecc";
> +       else
> +               return -EINVAL;

i wonder if the code would be simpler if we had a local static array.
then the show/store funcs would simply walk that tree, and when you
add a new format in the future, you only have to update one place.

static const char * const otp_redundancy_str[] = {
	[OTP_REDUNDANCY_FMT_SINGLE_ENDED] = "single-ended",
	[OTP_REDUNDANCY_FMT_REDUNDANT] = "redundant",
	........
};

> +static ssize_t otp_num_regions_show(struct device *dev,
> +                                   struct device_attribute *attr, char *buf)
> +{
> +       int nr_regions;
> +
> +       nr_regions = otp_dev->ops->get_nr_regions(otp_dev);
> +
> +       if (nr_regions < 0)
> +               return (ssize_t)nr_regions;

we could make get_nr_regions() return a ssize_t ...

> +       err = alloc_chrdev_region(&otp_dev->devno, 0, max_regions, "otp");

hmm, i was thinking that we'd have 1 major for otp devices.  isnt this
how MTD does it ?

> --- /dev/null
> +++ b/include/linux/otp.h
> +/**
> + * enum otp_device_flags - Flags to indicate capabilities for the OTP device.
> + *
> + * @OTP_DEVICE_FNO_SUBWORD_WRITE:      only full word sized writes may be
> + *                                     performed.  Don't use
> + *                                     read-modify-write cycles for
> + *                                     performing unaligned writes.
> + */
> +enum otp_device_flags {
> +       OTP_DEVICE_FNO_SUBWORD_WRITE    = (1 << 0),
> +};

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ