linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
@ 2012-11-21  5:19 Sachin Kamat
  2012-11-21 14:46 ` Greg KH
  0 siblings, 1 reply; 11+ messages in thread
From: Sachin Kamat @ 2012-11-21  5:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: gregkh, sachin.kamat, patches

kfree on a NULL pointer is a no-op.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 drivers/tty/vt/consolemap.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
index 2aaa0c2..248381b 100644
--- a/drivers/tty/vt/consolemap.c
+++ b/drivers/tty/vt/consolemap.c
@@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
 		kfree(p->inverse_translations[i]);
 		p->inverse_translations[i] = NULL;
 	}
-	if (p->inverse_trans_unicode) {
-		kfree(p->inverse_trans_unicode);
-		p->inverse_trans_unicode = NULL;
-	}
+	kfree(p->inverse_trans_unicode);
+	p->inverse_trans_unicode = NULL;
 }
 
 /* Caller must hold the console lock */
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21  5:19 [PATCH 1/1] tty: vt: Remove redundant null check before kfree Sachin Kamat
@ 2012-11-21 14:46 ` Greg KH
  2012-11-21 14:51   ` Sachin Kamat
  2012-11-21 22:43   ` Jiri Slaby
  0 siblings, 2 replies; 11+ messages in thread
From: Greg KH @ 2012-11-21 14:46 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-kernel, patches

On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
> kfree on a NULL pointer is a no-op.
> 
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> ---
>  drivers/tty/vt/consolemap.c |    6 ++----
>  1 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
> index 2aaa0c2..248381b 100644
> --- a/drivers/tty/vt/consolemap.c
> +++ b/drivers/tty/vt/consolemap.c
> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
>  		kfree(p->inverse_translations[i]);
>  		p->inverse_translations[i] = NULL;
>  	}
> -	if (p->inverse_trans_unicode) {
> -		kfree(p->inverse_trans_unicode);
> -		p->inverse_trans_unicode = NULL;
> -	}
> +	kfree(p->inverse_trans_unicode);
> +	p->inverse_trans_unicode = NULL;

kfree with NULL is a no-op, but the line after that just caused a kernel
crash if it was NULL, so I can't accept this type of thing.

Please be more careful.

What's with the patches@linaro.org email address?  What is that for?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 14:46 ` Greg KH
@ 2012-11-21 14:51   ` Sachin Kamat
  2012-11-21 15:16     ` Greg KH
  2012-11-21 22:43   ` Jiri Slaby
  1 sibling, 1 reply; 11+ messages in thread
From: Sachin Kamat @ 2012-11-21 14:51 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, patches

On 21 November 2012 20:16, Greg KH <gregkh@linuxfoundation.org> wrote:
> On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
>> kfree on a NULL pointer is a no-op.
>>
>> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>> ---
>>  drivers/tty/vt/consolemap.c |    6 ++----
>>  1 files changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
>> index 2aaa0c2..248381b 100644
>> --- a/drivers/tty/vt/consolemap.c
>> +++ b/drivers/tty/vt/consolemap.c
>> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
>>               kfree(p->inverse_translations[i]);
>>               p->inverse_translations[i] = NULL;
>>       }
>> -     if (p->inverse_trans_unicode) {
>> -             kfree(p->inverse_trans_unicode);
>> -             p->inverse_trans_unicode = NULL;
>> -     }
>> +     kfree(p->inverse_trans_unicode);
>> +     p->inverse_trans_unicode = NULL;
>
> kfree with NULL is a no-op, but the line after that just caused a kernel
> crash if it was NULL, so I can't accept this type of thing.
>
> Please be more careful.

My mistake. Apologies for the same.

Do we need to assign the pointer to NULL after freeing?

>
> What's with the patches@linaro.org email address?  What is that for?
That is a logging mechanism (done by patchwork) for all patches sent
by Linaro engineers.

>
> thanks,
>
> greg k-h



-- 
With warm regards,
Sachin

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 14:51   ` Sachin Kamat
@ 2012-11-21 15:16     ` Greg KH
  2012-11-21 15:29       ` Sachin Kamat
  0 siblings, 1 reply; 11+ messages in thread
From: Greg KH @ 2012-11-21 15:16 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-kernel, patches

On Wed, Nov 21, 2012 at 08:21:40PM +0530, Sachin Kamat wrote:
> On 21 November 2012 20:16, Greg KH <gregkh@linuxfoundation.org> wrote:
> > On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
> >> kfree on a NULL pointer is a no-op.
> >>
> >> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> >> ---
> >>  drivers/tty/vt/consolemap.c |    6 ++----
> >>  1 files changed, 2 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
> >> index 2aaa0c2..248381b 100644
> >> --- a/drivers/tty/vt/consolemap.c
> >> +++ b/drivers/tty/vt/consolemap.c
> >> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
> >>               kfree(p->inverse_translations[i]);
> >>               p->inverse_translations[i] = NULL;
> >>       }
> >> -     if (p->inverse_trans_unicode) {
> >> -             kfree(p->inverse_trans_unicode);
> >> -             p->inverse_trans_unicode = NULL;
> >> -     }
> >> +     kfree(p->inverse_trans_unicode);
> >> +     p->inverse_trans_unicode = NULL;
> >
> > kfree with NULL is a no-op, but the line after that just caused a kernel
> > crash if it was NULL, so I can't accept this type of thing.
> >
> > Please be more careful.
> 
> My mistake. Apologies for the same.
> 
> Do we need to assign the pointer to NULL after freeing?

It depends if it is checked later on, is it?

> > What's with the patches@linaro.org email address?  What is that for?
> That is a logging mechanism (done by patchwork) for all patches sent
> by Linaro engineers.

So you can track it internally?  Why?

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 15:16     ` Greg KH
@ 2012-11-21 15:29       ` Sachin Kamat
  2012-11-21 16:54         ` Greg KH
  0 siblings, 1 reply; 11+ messages in thread
From: Sachin Kamat @ 2012-11-21 15:29 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, patches

On 21 November 2012 20:46, Greg KH <gregkh@linuxfoundation.org> wrote:
> On Wed, Nov 21, 2012 at 08:21:40PM +0530, Sachin Kamat wrote:
>> On 21 November 2012 20:16, Greg KH <gregkh@linuxfoundation.org> wrote:
>> > On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
>> >> kfree on a NULL pointer is a no-op.
>> >>
>> >> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>> >> ---
>> >>  drivers/tty/vt/consolemap.c |    6 ++----
>> >>  1 files changed, 2 insertions(+), 4 deletions(-)
>> >>
>> >> diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
>> >> index 2aaa0c2..248381b 100644
>> >> --- a/drivers/tty/vt/consolemap.c
>> >> +++ b/drivers/tty/vt/consolemap.c
>> >> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
>> >>               kfree(p->inverse_translations[i]);
>> >>               p->inverse_translations[i] = NULL;
>> >>       }
>> >> -     if (p->inverse_trans_unicode) {
>> >> -             kfree(p->inverse_trans_unicode);
>> >> -             p->inverse_trans_unicode = NULL;
>> >> -     }
>> >> +     kfree(p->inverse_trans_unicode);
>> >> +     p->inverse_trans_unicode = NULL;
>> >
>> > kfree with NULL is a no-op, but the line after that just caused a kernel
>> > crash if it was NULL, so I can't accept this type of thing.
>> >
>> > Please be more careful.
>>
>> My mistake. Apologies for the same.
>>
>> Do we need to assign the pointer to NULL after freeing?
>
> It depends if it is checked later on, is it?

I will re-send this patch after deleting the assignment?

>
>> > What's with the patches@linaro.org email address?  What is that for?
>> That is a logging mechanism (done by patchwork) for all patches sent
>> by Linaro engineers.
>
> So you can track it internally?  Why?

Yes. For tracking the status.
>
> greg k-h



-- 
With warm regards,
Sachin

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 15:29       ` Sachin Kamat
@ 2012-11-21 16:54         ` Greg KH
  0 siblings, 0 replies; 11+ messages in thread
From: Greg KH @ 2012-11-21 16:54 UTC (permalink / raw)
  To: Sachin Kamat; +Cc: linux-kernel, patches

On Wed, Nov 21, 2012 at 08:59:08PM +0530, Sachin Kamat wrote:
> On 21 November 2012 20:46, Greg KH <gregkh@linuxfoundation.org> wrote:
> > On Wed, Nov 21, 2012 at 08:21:40PM +0530, Sachin Kamat wrote:
> >> On 21 November 2012 20:16, Greg KH <gregkh@linuxfoundation.org> wrote:
> >> > On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
> >> >> kfree on a NULL pointer is a no-op.
> >> >>
> >> >> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> >> >> ---
> >> >>  drivers/tty/vt/consolemap.c |    6 ++----
> >> >>  1 files changed, 2 insertions(+), 4 deletions(-)
> >> >>
> >> >> diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c
> >> >> index 2aaa0c2..248381b 100644
> >> >> --- a/drivers/tty/vt/consolemap.c
> >> >> +++ b/drivers/tty/vt/consolemap.c
> >> >> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
> >> >>               kfree(p->inverse_translations[i]);
> >> >>               p->inverse_translations[i] = NULL;
> >> >>       }
> >> >> -     if (p->inverse_trans_unicode) {
> >> >> -             kfree(p->inverse_trans_unicode);
> >> >> -             p->inverse_trans_unicode = NULL;
> >> >> -     }
> >> >> +     kfree(p->inverse_trans_unicode);
> >> >> +     p->inverse_trans_unicode = NULL;
> >> >
> >> > kfree with NULL is a no-op, but the line after that just caused a kernel
> >> > crash if it was NULL, so I can't accept this type of thing.
> >> >
> >> > Please be more careful.
> >>
> >> My mistake. Apologies for the same.
> >>
> >> Do we need to assign the pointer to NULL after freeing?
> >
> > It depends if it is checked later on, is it?
> 
> I will re-send this patch after deleting the assignment?

You tell me, please determine if it really is correct or not, before
sending a patch.  You did test this, right?

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 14:46 ` Greg KH
  2012-11-21 14:51   ` Sachin Kamat
@ 2012-11-21 22:43   ` Jiri Slaby
  2012-11-21 23:00     ` Greg KH
  1 sibling, 1 reply; 11+ messages in thread
From: Jiri Slaby @ 2012-11-21 22:43 UTC (permalink / raw)
  To: Greg KH; +Cc: Sachin Kamat, linux-kernel, patches

On 11/21/2012 03:46 PM, Greg KH wrote:
> On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
>> --- a/drivers/tty/vt/consolemap.c
>> +++ b/drivers/tty/vt/consolemap.c
>> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
>>  		kfree(p->inverse_translations[i]);
>>  		p->inverse_translations[i] = NULL;
>>  	}
>> -	if (p->inverse_trans_unicode) {
>> -		kfree(p->inverse_trans_unicode);
>> -		p->inverse_trans_unicode = NULL;
>> -	}
>> +	kfree(p->inverse_trans_unicode);
>> +	p->inverse_trans_unicode = NULL;
> 
> kfree with NULL is a no-op, but the line after that just caused a kernel
> crash if it was NULL, so I can't accept this type of thing.

Greg, I'm not sure -- what do you mean here? The change actually looks
fine to me... We do not dereference p->inverse_trans_unicode there.

thanks,
-- 
js
suse labs

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 22:43   ` Jiri Slaby
@ 2012-11-21 23:00     ` Greg KH
  2012-11-21 23:17       ` Jiri Slaby
  0 siblings, 1 reply; 11+ messages in thread
From: Greg KH @ 2012-11-21 23:00 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Sachin Kamat, linux-kernel, patches

On Wed, Nov 21, 2012 at 11:43:34PM +0100, Jiri Slaby wrote:
> On 11/21/2012 03:46 PM, Greg KH wrote:
> > On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
> >> --- a/drivers/tty/vt/consolemap.c
> >> +++ b/drivers/tty/vt/consolemap.c
> >> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
> >>  		kfree(p->inverse_translations[i]);
> >>  		p->inverse_translations[i] = NULL;
> >>  	}
> >> -	if (p->inverse_trans_unicode) {
> >> -		kfree(p->inverse_trans_unicode);
> >> -		p->inverse_trans_unicode = NULL;
> >> -	}
> >> +	kfree(p->inverse_trans_unicode);
> >> +	p->inverse_trans_unicode = NULL;
> > 
> > kfree with NULL is a no-op, but the line after that just caused a kernel
> > crash if it was NULL, so I can't accept this type of thing.
> 
> Greg, I'm not sure -- what do you mean here? The change actually looks
> fine to me... We do not dereference p->inverse_trans_unicode there.

If we never dereference it, why is it being set to NULL?

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 23:00     ` Greg KH
@ 2012-11-21 23:17       ` Jiri Slaby
  2012-11-22  0:38         ` Greg KH
  0 siblings, 1 reply; 11+ messages in thread
From: Jiri Slaby @ 2012-11-21 23:17 UTC (permalink / raw)
  To: Greg KH; +Cc: Sachin Kamat, linux-kernel, patches

On 11/22/2012 12:00 AM, Greg KH wrote:
> On Wed, Nov 21, 2012 at 11:43:34PM +0100, Jiri Slaby wrote:
>> On 11/21/2012 03:46 PM, Greg KH wrote:
>>> On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
>>>> --- a/drivers/tty/vt/consolemap.c
>>>> +++ b/drivers/tty/vt/consolemap.c
>>>> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
>>>>  		kfree(p->inverse_translations[i]);
>>>>  		p->inverse_translations[i] = NULL;
>>>>  	}
>>>> -	if (p->inverse_trans_unicode) {
>>>> -		kfree(p->inverse_trans_unicode);
>>>> -		p->inverse_trans_unicode = NULL;
>>>> -	}
>>>> +	kfree(p->inverse_trans_unicode);
>>>> +	p->inverse_trans_unicode = NULL;
>>>
>>> kfree with NULL is a no-op, but the line after that just caused a kernel
>>> crash if it was NULL, so I can't accept this type of thing.
>>
>> Greg, I'm not sure -- what do you mean here? The change actually looks
>> fine to me... We do not dereference p->inverse_trans_unicode there.
> 
> If we never dereference it, why is it being set to NULL?

I'm not disputing the assignment. Let it there. But I do not see any
issues with the patch. What problem do you see exactly?


-- 
js
suse labs

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-21 23:17       ` Jiri Slaby
@ 2012-11-22  0:38         ` Greg KH
  2012-11-22  5:19           ` Sachin Kamat
  0 siblings, 1 reply; 11+ messages in thread
From: Greg KH @ 2012-11-22  0:38 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Sachin Kamat, linux-kernel, patches

On Thu, Nov 22, 2012 at 12:17:00AM +0100, Jiri Slaby wrote:
> On 11/22/2012 12:00 AM, Greg KH wrote:
> > On Wed, Nov 21, 2012 at 11:43:34PM +0100, Jiri Slaby wrote:
> >> On 11/21/2012 03:46 PM, Greg KH wrote:
> >>> On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
> >>>> --- a/drivers/tty/vt/consolemap.c
> >>>> +++ b/drivers/tty/vt/consolemap.c
> >>>> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
> >>>>  		kfree(p->inverse_translations[i]);
> >>>>  		p->inverse_translations[i] = NULL;
> >>>>  	}
> >>>> -	if (p->inverse_trans_unicode) {
> >>>> -		kfree(p->inverse_trans_unicode);
> >>>> -		p->inverse_trans_unicode = NULL;
> >>>> -	}
> >>>> +	kfree(p->inverse_trans_unicode);
> >>>> +	p->inverse_trans_unicode = NULL;
> >>>
> >>> kfree with NULL is a no-op, but the line after that just caused a kernel
> >>> crash if it was NULL, so I can't accept this type of thing.
> >>
> >> Greg, I'm not sure -- what do you mean here? The change actually looks
> >> fine to me... We do not dereference p->inverse_trans_unicode there.
> > 
> > If we never dereference it, why is it being set to NULL?
> 
> I'm not disputing the assignment. Let it there. But I do not see any
> issues with the patch. What problem do you see exactly?

{sigh}  Nothing.  I don't know what I was thinking, my apologies
Sachin, there's nothing wrong with this patch.

I blame my fried brain, after reviewing all of those __dev* removal
patches :)

Sachin, can you resend these patches so I can apply them?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/1] tty: vt: Remove redundant null check before kfree.
  2012-11-22  0:38         ` Greg KH
@ 2012-11-22  5:19           ` Sachin Kamat
  0 siblings, 0 replies; 11+ messages in thread
From: Sachin Kamat @ 2012-11-22  5:19 UTC (permalink / raw)
  To: Greg KH; +Cc: Jiri Slaby, linux-kernel, patches

On 22 November 2012 06:08, Greg KH <gregkh@linuxfoundation.org> wrote:
> On Thu, Nov 22, 2012 at 12:17:00AM +0100, Jiri Slaby wrote:
>> On 11/22/2012 12:00 AM, Greg KH wrote:
>> > On Wed, Nov 21, 2012 at 11:43:34PM +0100, Jiri Slaby wrote:
>> >> On 11/21/2012 03:46 PM, Greg KH wrote:
>> >>> On Wed, Nov 21, 2012 at 10:49:07AM +0530, Sachin Kamat wrote:
>> >>>> --- a/drivers/tty/vt/consolemap.c
>> >>>> +++ b/drivers/tty/vt/consolemap.c
>> >>>> @@ -410,10 +410,8 @@ static void con_release_unimap(struct uni_pagedir *p)
>> >>>>                  kfree(p->inverse_translations[i]);
>> >>>>                  p->inverse_translations[i] = NULL;
>> >>>>          }
>> >>>> -        if (p->inverse_trans_unicode) {
>> >>>> -                kfree(p->inverse_trans_unicode);
>> >>>> -                p->inverse_trans_unicode = NULL;
>> >>>> -        }
>> >>>> +        kfree(p->inverse_trans_unicode);
>> >>>> +        p->inverse_trans_unicode = NULL;
>> >>>
>> >>> kfree with NULL is a no-op, but the line after that just caused a kernel
>> >>> crash if it was NULL, so I can't accept this type of thing.
>> >>
>> >> Greg, I'm not sure -- what do you mean here? The change actually looks
>> >> fine to me... We do not dereference p->inverse_trans_unicode there.
>> >
>> > If we never dereference it, why is it being set to NULL?
>>
>> I'm not disputing the assignment. Let it there. But I do not see any
>> issues with the patch. What problem do you see exactly?
>
> {sigh}  Nothing.  I don't know what I was thinking, my apologies
> Sachin, there's nothing wrong with this patch.
>
> I blame my fried brain, after reviewing all of those __dev* removal
> patches :)
>
> Sachin, can you resend these patches so I can apply them?

No problem Greg. I will send them again.

>
> thanks,
>
> greg k-h



-- 
With warm regards,
Sachin

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2012-11-22 21:10 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-21  5:19 [PATCH 1/1] tty: vt: Remove redundant null check before kfree Sachin Kamat
2012-11-21 14:46 ` Greg KH
2012-11-21 14:51   ` Sachin Kamat
2012-11-21 15:16     ` Greg KH
2012-11-21 15:29       ` Sachin Kamat
2012-11-21 16:54         ` Greg KH
2012-11-21 22:43   ` Jiri Slaby
2012-11-21 23:00     ` Greg KH
2012-11-21 23:17       ` Jiri Slaby
2012-11-22  0:38         ` Greg KH
2012-11-22  5:19           ` Sachin Kamat

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).